文章目录

  • out
    • JspWriter 和 PrintWriter 的区别
  • request
  • response
  • session
  • application
  • exception
  • config
  • pageContext
    • pageContext 的作用
      • 绑订数据
      • 获得其它几个隐含对象
  • page
  • 四个 JSP 域对象
    • 访问范围比较

out

out 对象是 javax.servlet.jsp.JspWriter 类的实例,用来在 response 对象中写入内容。
最初的 JspWriter 类对象根据页面是否有缓存来进行不同的实例化操作。可以在 page 指令中使用 buffered='false' 属性来轻松关闭缓存。
JspWriter 类包含了大部分 java.io.PrintWriter 类中的方法。不过,JspWriter 新增了一些专为处理缓存而设计的方法。还有就是,JspWriter 类会抛出 IOExceptions 异常,而 PrintWriter 不会。

功能:out 对象是一个字符输出流对象,用于将数据写入到 Response 对象中。

JspWriter 和 PrintWriter 的区别

PrintWriter 对象中的数据会先于 JspWriter 对象中的数据输出到 Response 对象中,无论 response.getWriter() 的代码是在前面还是在后面,服务器都会先将 PrintWriter 对象中的数据,写入到 Response 对象中,最后才会将 JspWriter 对象中的数据写入到 Response 对象中。

request

request 对象是 javax.servlet.http.HttpServletRequest 类的实例。每当客户端请求服务端时,Web 容器就会创建一个新的 request 对象来代表这个请求,即 request 对象会封装请求消息数据。

生命周期:服务器接收到请求时,服务器就会自动创建一个 request 对象来封装请求消息的数据;当请求处理完毕即服务器把响应数据包发送给客户端后,request 对象会被容器销毁。

response

response对象是 javax.servlet.http.HttpServletResponse 类的实例。当服务器创建request对象时会同时创建用于响应这个客户端的response对象。response对象用于把取得的数据返回到客户端。
response对象也定义了处理HTTP头模块的接口。通过这个对象,开发者们可以添加新的cookies,时间戳,HTTP状态码等。

生命周期:Request 对象创建后,容器就会自动创建对应的 Response 对象,当服务器将响应数据发送给客户端后,Request 对象和 Response 对象一起被销毁。

session

session 对象是 javax.servlet.http.HttpSession 类的实例。和 Java Servlets 中的 session 对象有一样的行为。session 对象用来跟踪各个客户端的访问会话。

生命周期:

application

javax.servlet.ServletContext 类的实例。一个 web 应用中只有一个 ServletContext,整个应用内部所有组件都能访问。

ServletContext 的实例还可以读取初始化参数值。

生命周期:
web 服务器在启动时,会为每一个已经部署的应用创建唯一的一个 ServletContext 实例,除非服务器关闭或者应用被删除,否则 ServletContext 实例对象一直存在。

另说:当某个应用的首个请求到达服务器的时候,服务器才启动该应用,并为其创建一个 ServletContext 对象。

exception

exception对象是Throwable的实例,当一个页面设置了<%@page isErrorPage=“true”%>,则可以在该页面当中,使用该隐含对象读取错误信息。

config

config 对象是 javax.servlet.ServletConfig 类的实例,它包含了当前 JSP/Servlet 所在的 WEB 应用的配置信息。
通常开发者会通过这个对象访问 Servlet 或者 JSP 引擎的初始化参数,比如文件路径等。

生命周期:web 服务器在启动时,会为每一个已经部署的应用创建唯一的一个 ServletConfig 实例,除非服务器关闭或者应用被删除,否则一直存在。

pageContext

pageContext 对象是 javax.servlet.jsp.PageContext 类的实例,用来代表整个 jsp 页面。这个对象主要用来访问页面信息,同时过滤掉大部分实现细节。服务器会为每一个 JSP 实例(指的是 JSP 对应的那个 Servlet 类的实例对象,该实例对象可以使用变量 page 引用)创建唯一的一个 PageContext 实例。只有 JSP 实例才能访问 pageContext 对象。

pageContext 对象也包含了传给 jsp 页面的指令信息,包括缓存信息,ErrorPage URL,页面 scope 等。

PageContext 类定义了一些字段,包括 PAGE_SCOPE,REQUEST_SCOPE,SESSION_SCOPE, APPLICATION_SCOPE。它也提供了40 余种方法,有一半继承自 javax.servlet.jsp.JspContext 类。

生命周期:随着 JSP 实例的创建而创建,随着 JSP 实例的销毁而销毁。

pageContext 的作用

作用主要有两个。

绑订数据

读写属性值和移除属性。

setAttribute()
getAttribute()
removeArribute():它可接受一个或两个参数。

pageContext.removeArribute("attrName"); // 移除四个scope中相关属性
pageContext.removeAttribute("attrName", PAGE_SCOPE); // 这种方法只移除特定scope中的相关属性

获得其它几个隐含对象

即在获得了 pageContext 实例后,可以通过该实例,获得其它 8 个隐含对象。

page

表示 JSP 实例本身,实际就是 JSP 对应的那个 Servlet 类的实例对象,在 service 方法中有这样的代码 Object page = this

生命周期:

在 web.xml 文件中的 <servlet> 标签下通过 <load-on-startup> 标签配置自然数值可以在服务器启动时创建 Servlet 实例,值越小优先级越高,服务器会按从小到大的顺序创建 Servlet 实例。负数则表示第一次访问 Servlet 时创建实例,默认值是 -1

服务器会根据一定算法查找没有使用的 Servlet 实例,并将其销毁,当然服务器关闭或者应用删除了,Servlet 实例也会被销毁。

四个 JSP 域对象

pageContext
只有对应的 JSP 实例自己可以访问,生命周期从对应的 JSP 实例的创建到 JSP 对象的消亡。JSP 实例创建,容器会自动创建相关联的 PageContex 对象,JSP 实例消亡,相关联的 PageContex 对象也会被销毁。

request
一次请求能访问,生命周期在一起请求和响应期间。

session
一次会话期间能访问,多次请求和响应期间都存在。

ServletContext
整个应用内部所有组件都能访问,除非服务器关闭,否则一直存在。

访问范围比较

pageContext < request < session < application

JSP的隐含对象/隐藏对象/内置对象介绍相关推荐

  1. jsp 将页面中的值导入java中_JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC 设计模式

    JSP 的概述 概念 JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp. 与 Servlet 不同,J ...

  2. jsp提供了的9个内置对象

    2019独角兽企业重金招聘Python工程师标准>>> 下面jsp的9大内置对象方法说明 内置对象 类型 作用域   request javax.servlet.http.HttpS ...

  3. jsp内置对象与el内置对象

    jsp有九种内置对象 1). request 请求对象 javax.servlet.ServletRequest 当客户端向服务器端发送一个请求,服务器向客户端返回一个响应后,该请求对象就被销毁了; ...

  4. java中jsp内建对象有_JSP内置对象有哪些

    JSP中的内置对象有:out应用程序.request应用程序.访问客户数据.response的应用.session的应用.application的应用.在web.xml中获取配置对象.获取异常信息等 ...

  5. vue js 定义对象_JS标准内置对象Proxy及Vue中的proxy.js文件

    昔登铜井望法华,葱茏螺黛浮蒹葭.今登法华望铜井,湖水迷茫烟色瞑.-- <登法华寺山顶> Proxy是什么 Proxy是JS标准内置对象中的一个对象.用于创建一个对象的代理.从而实现对对象操 ...

  6. 单体内置对象_单体内置对象

    内置对象:由ECMAscript实现提供的,不依赖宿主环境的对象,这些对象再ES程序执行之前就已经存在 Global对象 Global全局对象是一个特别的对象(兜底对象) 不属于其他对象的属性和方法, ...

  7. window内置对象和js内置对象与方法

    window内置对象 一.navigator   代表着浏览器本身的信息: 代码名:navigator.appCodeName 浏览器语言:navigator.browserLanguage 操作系统 ...

  8. js浏览器内置对象和js内置对象

    浏览器内置 1.Location 对象 hash :返回一个URL的锚部分 host 返回一个URL的主机名和端口 hostname 返回URL的主机名 href 返回完整的URL pathname ...

  9. JSP最常用的五种内置对象

    一.request对象 在作用域中管理属性 有时,在进行请求转发时,需要把一些数据带到转发后的页面进行处理.这时,就可以使用request对象的setAttribute()方法设置数据在request ...

  10. python语言的内置对象类型_Python内置对象类型

    核心数字类型: 数字:int,long,float,complex,bool 字符:str,unicode 列表:list 字典:dict 元组:tuple 文件:file 其他类型:集合(set), ...

最新文章

  1. Spring事务管理只对出现运行期异常进行回滚
  2. Systemd 入门教程:实战篇
  3. node.js之path模块的使用
  4. 【解决方案】Monkey-patching ssl after ssl has already been imported may lead to errors
  5. ubuntu 查看网卡 数据包处理 速度
  6. 【转】正则表达式简介及在C++11中的简单使用教程
  7. 《PostgreSQL服务器编程》一一1.8 程序设计最佳实践
  8. oracle 12c sp2 0667,SP2-0667/SP2-0750错误
  9. web memory
  10. poj Fibonacci(快速幂取模运算)
  11. win10系统安装虚拟机
  12. pygame 安装方法
  13. python中集合可以使用下标吗_Python之集合
  14. buildSrc使用,依赖统一管理
  15. 如何将已加好的脚注或尾注转换成中括号“[]”格式
  16. 紫书 UVa437巴比伦塔
  17. mongodb更新文档
  18. 0基础小白,怎么通过这5招玩转网络社群营销?
  19. pygame图片精灵
  20. 在线客服系统源码 自适应手机移动端 支持多商家 带搭建教程

热门文章

  1. natty的异步通信框架_OpenHub框架进行的异步通信
  2. 使用log4j记录日志_使用log4j2免费分配日志记录
  3. 在等待Jakarta EE时
  4. Java 11的期望
  5. maven项目 ant_将大型项目从Ant迁移到Maven
  6. 5个构建Spring Boot API的实用技巧
  7. 如何导入任何JBoss BRMS示例项目
  8. 在WildFly的REST Web服务中与Jackson的双向关系
  9. 减少Java垃圾收集开销的5条提示
  10. 在OpenShift上扩展Java EE微服务