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

目录
相关文章
|
8月前
|
存储 前端开发 Java
JSP 域对象详细讲解
JSP 域对象详细讲解
54 0
|
5月前
|
Java
JSP中9个隐含对象
JSP中9个隐含对象
|
6月前
|
Java
每日一道面试题之 介绍一下jsp 的 4 种作用域
每日一道面试题之 介绍一下jsp 的 4 种作用域
|
8月前
|
Java
JSP四大作用域和九种隐式对象
JSP四大作用域和九种隐式对象
56 1
|
8月前
|
Java 程序员 容器
jsp与servlet的区别以及jsp的四个作用域
jsp与servlet的区别以及jsp的四个作用域
54 0
|
9月前
|
Java
JSP的四个作用域
JSP有四个作用域
76 0
|
10月前
|
Java
你应该了解的JSP开发细节之out对象(一)
你应该了解的JSP开发细节之out对象(一)
77 0
Java 最常见的面试题:说一下 jsp 的 4 种作用域?
Java 最常见的面试题:说一下 jsp 的 4 种作用域?
|
Java
JSP out隐式对象
JSP out隐式对象
93 0
|
Java
jsp 隐式对象
jsp 隐式对象
61 0

相关课程

更多