JSP中的隐式对象和四种会话作用域

简介: JSP中的隐式对象和四种会话作用域

Servlet是一个Java类,采用CGI方式逐句输出HTML语句,主要用于业务逻辑层,实现业务逻辑的处理。JSP将Java代码嵌套在HTML中,简化和方便了网页的设计和修改。是为实现表示层而设计的,主要完成界面的显示逻辑。其中jsp的隐式对象都一一对应一个Java类实例。

image.png

【1】与作用域范围有关的四个隐式对象

pageScope、requestScope、sessionScope和applicationScope。

它们可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(Stringname),却不能取得其他相关信息。

例如,要取得session中储存的一个username属性的值,可以利用下面的方法:

##设置属性如下
pageContext.setAttribute("name","tomcat");
request.setAttribute("name", "jane");
session.setAttribute("name", "janus");
application.setAttribute("name","lucy");

在EL中则使用下面的方法:

${pageScope.username}
${requestScope.username}
${sessionScope.username}
${applicationScope.username}

注意:如果没有设定使用EL内置对象的作用范围,则按照pageScope、requestScope、sessionScope和applicationScope的先后顺序读取属性值。


即,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。


【2】与输入有关的两个隐式对象

param和paramValue,主要用于取得请求参数。

​request.getParameter(Stringname)
request.getParameterValues(String name)

在EL表达式中则可以使用param和paramValues两者来取得数据:

${param.name}*****${paramValues.name}

【3】cookie

用来取得使用者的cookie值,例如在cookie中设定了username属性值,可以使用如下格式获取值:

${cookie.JSESSIONID.value}

20200303104820362.png


【4】header和headerValues

读取请求的头数据,使用header或headerValues内置对象。headerValues则用来取得所有的头信息,等价于调用request.getHeaders()方法。EL表达式实例如下:

${header["User-Agent"]}
${headerValues}

20200303105216714.png


【5】initParam

initParam用来读取设置在web.xml中的参数值。

例如${initParam.repeat}

等价于:(String)application.getInitParameter(“repeat”);

或:servletContext.getInitParameter(“repeat”)。


【6】pageContext

pageContext用于取得其他有关用户要求或页面的详细信息,提供了对JSP页面内所有的对象及名字空间的访问,使用它可以访问request、session和application等对象中的内容。pageContext是PageContext类型的实例。

​${pageContext.request.queryString}:取得请求的参数字符串
${pageContext.request.requestURL}: 取得请求的URL,不包括参数字符串
${pageContext.request.contextPath}: 服务的web application 的名称
${pageContext.request.method}: 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol}:取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser}: 取得用户名称
${pageContext.request.remoteAddr}: 取得用户的IP 地址
${pageContext.session.new}: 判断session 是否为新的
${pageContext.session.id}: 取得session 的ID
${pageContext.servletContext.serverInfo}:取得主机端的服务信息

如下在页面使用el表达式pageContext可以获取如下属性:

【7】request对象

request代表请求对象,主要用于接受客户端通过HTTP协议链接传输到服务器端的数据。它是HttpServletRequest对象的实例。

生命周期:一次请求或使用forward方式执行请求转发。

【8】response对象

response代表响应对象,主要用于向客户端发送数据。它是HttpServletResponse对象的实例。

【9】session对象

session对象储存在服务器内存中,用于跟踪用户信息。默认有效期一般在30分钟左右。session代表客户端与服务器的会话,从客户连到服务器开始,直到客户端与服务器断开连接为止。session对象主要用于保存用户信息,它是HttpSession类型的实例。

生命周期:当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。会话超时或者服务器强制使session失效。

【10】out对象

out主要用于向客户端输出数据。它是JspWriter类型的实例。

【11】page对象

page对象代表了当前JSP页面的本身,有点类似于this关键字。它是java.lang.Object类的实例。

作用范围:一个JSP页面有效;

【12】application对象–非线程安全

application对象实现了用户间数据的共享,可存放全局变量。它开始于服务器的启动,直到服务器关闭。application是ServletContext类型的实例。

【13】exception对象

exception对象是一个异常对象,当页面在运行过程中产生异常时,就产生该对象。exception是java.lang.Throwable类型的实例。

常用方法如下:

String getMessage()--返回描述异常的信息;
String toString()--返回关于异常的简短描述消息;
void printStackTrace()--显示异常及其栈轨迹;
Throwable FillInStackTrace()--重写异常的执行栈轨迹;

如果在一个JSP页面中使用该对象,则必须设置 “isErrorPage = true”!!

【14】config对象

config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的。此信息包括Servlet初始化时所要用到的参数以及服务器有关的信息。config是ServletConfig类型的实例。

常用方法如下:

ServletContext getServletContext()--返回含有服务器相关信息的ServletContext对象;
String getInitParameter(String name)--返回初始化参数的值;
Enumeration getInitParameterNames()--返回Servlet初始化所需的所有参数的枚举;

【15】四种会话作用域

所谓“作用域”就是“信息共享的范围”,也就是说一个信息能够在多大的范围内有效。

page域  数据在一个页面范围内有效,通过pageContext对象访问。
request域 数据在一个服务器请求范围内有效,通过request对象访问。
session域 数据在一次会话范围内容有效,通过session对象访问。
application域 数据在一个应用服务器范围内有效,通过application对象访问。

JSP中内置对象及其相应所属作用域如下表:

image.png

目录
相关文章
|
Java
17JavaWeb基础 - JSP的九大内置对象/四大作用域
17JavaWeb基础 - JSP的九大内置对象/四大作用域
76 0
|
6月前
|
缓存 Java 开发者
JSP 教程 之 JSP 隐式对象 10
JSP隐式对象是预定义的Java对象,如request、response、out、session、application等,直接供开发者使用。out对象是JspWriter实例,用于向网页输出内容,类似PrintWriter但有缓存处理和抛出IOException。exception对象保存了页面的异常信息,用于错误处理。
38 3
|
6月前
|
Java 开发者 容器
JSP 教程 之 JSP 隐式对象 3
JSP教程讲解了九个隐式对象,如request、response、out、session、application、config、pageContext、page和Exception。response对象是HttpServletResponse的实例,用于向客户端发送响应,包括设置HTTP头信息、添加cookie和状态码。
36 3
|
6月前
|
Java 开发者 容器
JSP 教程 之 JSP 隐式对象 2
JSP隐式对象是预定义的Java对象,无需声明即可直接使用。包括9大对象:request(HttpServletRequest,处理客户端请求)、response(HttpServletResponse,响应输出)、out(JspWriter,输出到网页)、session(HttpSession,用户会话管理)、application(ServletContext,应用上下文)、config(ServletConfig,配置信息)、pageContext(PageContext,全局访问)、page(当前页面对象)和Exception(异常对象)。
42 3
|
6月前
|
缓存 Java 开发者
JSP 教程 之 JSP 隐式对象 5
JSP教程介绍了九个隐式对象,如request、response、out、session、application等,无需声明即可直接使用。out对象是JspWriter实例,用于向网页输出内容,可配置是否缓存。它扩展了PrintWriter功能,处理缓存并可能抛出IOException。session对象基于HttpSession,用于跨客户端请求的会话跟踪。
30 1
|
6月前
|
Java 开发者 容器
JSP 教程 之 JSP 隐式对象 1
**JSP隐式对象**是无需声明的预定义Java对象,如`request`(HttpServletRequest)处理请求,`response`(HttpServletResponse)构造响应,`out`(JspWriter)输出到页面,`session`(HttpSession)管理会话,`application`(ServletContext)涵盖整个应用,`config`(ServletConfig)提供配置信息,`pageContext`(PageContext)访问页面上下文,`page`类似Java的`this`,及`Exception`对象捕获页面异常。
31 2
|
6月前
|
存储 Java 应用服务中间件
JSP的运行原理是什么?JSP的作用域有哪些?
JSP四大作用域分别为:page、request、session、application。
102 11
|
6月前
|
缓存 Java 开发者
JSP 教程 之 JSP 隐式对象 9
JSP隐式对象是预定义的Java对象,无需声明即可直接使用。包括9大对象:request(HttpServletRequest)、response(HttpServletResponse)、out(JspWriter,用于输出到网页)、session(HttpSession)、application(ServletContext)、config(ServletConfig)、pageContext(PageContext,访问所有对象和命名空间)、page(页面实例,等同于Java的this)和Exception(异常对象)。
43 0
|
6月前
|
缓存 Java 对象存储
JSP 教程 之 JSP 隐式对象 8
JSP隐式对象是预定义的Java对象,如request、response、out等,无需声明即可直接使用。out对象是JspWriter实例,用于向response输出内容,支持print和println方法,可抛出IOException。pageContext对象代表整个JSP页面,提供访问页面信息和不同scope的对象,如request、response、session等,并有removeAttribute()方法管理页面属性。
33 0
|
6月前
|
缓存 Java 开发者
JSP 教程 之 JSP 隐式对象 7
JSP隐式对象是预定义的Java对象,无需声明即可使用。包括9大对象:request、response、out、session、application、config、pageContext、page和Exception。其中,out对象用于输出内容到网页,基于JspWriter,支持print和println方法。config对象是ServletConfig的实例,提供访问Servlet初始化参数的途径,如获取servlet名称。
31 0