pageContext隐含对象对应于javax.servlet.jsp.PageContext型态之对象,,隐含对象都自动的被加入至 pageContext中,您可以藉由它来取得与JSP相关的隐含对象对应之Servlet对象,像是getRequest()可以取得 ServletRequest,getServletConfig()可以取得ServletConfig,getSession()可以取得 HttpSession等等。提供取得隐含对象对应之Servlet对象并不是pageContext的主要作用,它的主要功能在提供一个单一个接口,以管理各种的公开对象(像是HttpSession、ServletContext、ServletConfig、ServletRequest、 ServletResponse等等),提供一个单一的API来管理属性作用范围等等。
之前曾经使用过session的setAttribute()等方法设定一个进程可以共享的属性对象,使用session设定的属性在同一个进程中可以共享,除了session之外,还有pageContext、request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共享的属性对象,只不过这四个对象所设定的属性其共享范围各不相同。
使用pageContext所设定的属性对象,其共享范围限于同一个JSP页面。
使用request所设定的属性对象,其在同一个 request处理期间可以共享(包括forward给其它JSP页面),由于request只存活在请求时,设定属性时为执行绪安全的。
session对象所设定的属性对象则限于同一个进程作用期间可以共享,设定属性时,必须注意执行绪安全问题。
而application对象所设定的属性,则在整个Web应用程序中的JSP页面都可以共享,设定属性时,必须注意执行绪安全问题。
以下举application为例,您可以将一些对象当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性对象,例如:
<%
String attr = "字符串对象";
out.println("设定属性给application:" + attr);
application.setAttribute("str", attr);
%>
先连上这个JSP网页以执行属性设定,然后再连上这个JSP网页:
<%
String attr = (String) application.getAttribute("str");
out.println("取得application属性:" + attr);
%>
由于之前已经将字符串对象设定在application中作为属性,所以可以在上面这个JSP页面中取得之前设定的对象,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等对象,只要在允许的作用范围中,就可以取得所设定的属性对象。
您可以使用pageContext对象来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、 session、application来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定:
getAttribute(String name, int scope)
setAttribute(String name, Object value, int scope)
removeAttribute(String name, int scope)
其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、 pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、 pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,可以将上面的两个JSP页面改为以下的形式:
<%
String attr = "字符串对象";
out.println("设定属性给application:" + attr);
pageContext.setAttribute("str", attr,
pageContext.APPLICATION_SCOPE);
%>
另一个JSP页面:
<%
String attr = (String) pageContext.getAttribute("str",
pageContext.APPLICATION_SCOPE);
out.println("取得application属性:" + attr);
%>
当您不知道属性的范围时,也可以使用pageContext来找出属性,例如:
<%
String attr = (String) pageContext.findAttribute("str");
out.println(attr);
%>
pageContext会从page范围开始寻找属性,如果找不到就依request、session、application的范围来寻找属性对象。
分享到:
相关推荐
1. **获取`HttpServletRequest`对象**:在Servlet环境中,可以通过`ServletActionContext.getHttpRequest()`或`ServletRequestAttributes.getRequest()`方法来获取当前的`HttpServletRequest`对象。 2. **获取`...
NULL 博文链接:https://chaoyi.iteye.com/blog/2070817
1. PageContext 对象不是 Page 对象:PageContext 对象和 Page 对象是两个不同的对象,它们有不同的作用和应用场景。 2. PageContext 对象的生命周期:PageContext 对象的生命周期与当前 JSP 页面的生命周期相同,...
1. PageContext(页面上下文): PageContext对象提供了一个统一的接口,用于访问Web应用程序中的所有作用域。它允许开发者在JSP页面内部获取和共享数据。PageContext的作用域仅限于当前JSP页面,一旦页面处理完成...
1. **PageContext**:作用域最小,仅限于当前页面。 2. **Request**:用于处理单一请求,可以在一个请求处理过程中被多个页面访问。 3. **Session**:作用域较大,适用于用户的整个会话期间。 4. **Application**:...
1. 构建完整的URL:在创建链接或者引用静态资源(如CSS、JavaScript文件或图片)时,使用${pageContext.request.contextPath} 可以确保链接总是指向正确的路径,即使应用部署在不同的服务器或路径下。例如,如果你有...
此外,pageContext还提供了一系列方法来获取和操作这些对象,如pageContext.getRequest()、pageContext.getResponse()等。 利用pageContext对象可以跨域获取其他域范围内的属性。例如,如果我们想要获取session范围...
在JavaScript中,${pageContext.request.contextPath}是一个特殊表达式,它源于JavaServer Pages (JSP) 的Expression Language (EL),用于获取当前请求的应用上下文路径。应用上下文路径是Web应用程序在服务器上的根...
超全面javaweb教程28天第11,12天_5_pageContext对象
1. **pageContext对象**: - `PageContext`对象提供对整个JSP页面的访问,可以获取其他所有内置对象的引用,也可以用来存储页面级的数据。 - 示例代码: ```java ...
1. **统一的作用域访问**:PageContext允许开发者通过一个接口就能访问request、session、application和page四个作用域,简化了代码并提高了可维护性。例如,`pageContext.getAttribute("name")` 可以获取任何作用域...
1. **提供访问当前页面上下文中各种对象的方法**:例如,可以通过 `PageContext` 获取到 `HttpServletRequest` 和 `HttpServletResponse` 对象,从而处理用户请求和生成响应。 ```java HttpServletRequest ...
${pageContext.request.contextPath}/checkcode.jsp"/> 另外在web.xml中配置验证码类的加载: <servlet-name>CheckCodeImage <servlet-class>com.netshop.common.util.CheckCodeImage</servlet-class> ...
2. **`pageContext`**:提供对JSP页面上下文的访问,允许在不同作用域间共享数据。 3. **`request`**:表示HTTP请求,用于获取客户端发送的数据,如参数、头信息等。 4. **`response`**:表示HTTP响应,用于设置响应...
解决jsp中out对象和pageContext不能调用方法的问题,将这一jar包下载并导入项目就可以成功解决这一问题。
NULL 博文链接:https://albert0707.iteye.com/blog/562969
本文档详细介绍了作用域对象、Servlet上下文监听器、Servlet会话监听器、Servlet请求监听器
${currentUser.flag==1 }"> <li><a href="${pageContext.request.contextPath}/student!list">学生信息管理</a></li> <li><a href="${pageContext.request.contextPath}/exam!list">学生作业情况查询</a></li> ...