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

本文介绍了JSP与Servlet的基本概念及应用场景,详细解释了JSP的隐式对象及其作用范围,如pageScope、requestScope、sessionScope和applicationScope,并探讨了如何通过EL表达式访问这些对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

对象描述
request对应HttpServletRequest
response对应HttpServletResponse
out对应JspWriter
session对应HttpSession
config对应SevletConfig
pageContext对应PageContext
pageObject的同义词
application对应ServletContext
ExceptionException对象运行jsp访问指定的数据

【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}

在这里插入图片描述


【4】header和headerValues

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

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

在这里插入图片描述


【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中内置对象及其相应所属作用域如下表:

对象所属作用域作用域描述
requestrequest在当前请求中有效
responsepage在当前页面有效
outpage在当前页面有效
sessionsession在当前会话中有效
applicationapplication在所有应用程序中有效
configpage在当前页面有效
pageContextpage在当前页面有效
pagepage在当前页面有效
Exceptionpage在当前页面有效
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流烟默

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值