您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

JSP的隐含对象/隐藏对象/内置对象介绍

liaowenxiong 发布时间:2020-04-02 11:54:30 ,浏览量:1

文章目录
  • 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的实例,当一个页面设置了,则可以在该页面当中,使用该隐含对象读取错误信息。

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 实例,值越小优先级越高,服务器会按从小到大的顺序创建 Servlet 实例。负数则表示第一次访问 Servlet 时创建实例,默认值是 -1

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

四个 JSP 域对象

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

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

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

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

访问范围比较

pageContext < request < session < application

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0516s