PageContext
pageContext对象
pageContext对象是JSP中很重要的一个内置对象,不过在一般的JSP程序中,很少用到它,所以知道request对象、response对象的人比较多,知道pageContext对象的人就比较少了。它是javax.servlet.jsp.PageContext类的实例对象,可以使用PageContext类的方法。实际上,pageContext对象提供了对JSP页面所有的对象及命名空间的访问,正如前面所介绍的一样,使用pageContext对象可以访问application对象、exception对象,还有session对象等。pageContext对象的方法可以访问除本身以外的8个JSP内部对象,还可以直接访问绑定在application对象、page对象、request对象、session对象上的Java对象。pageContext对象相当于JSP程序中所有对象功能的集成者。不过,这里存在着一个问题,既然可以直接访问JSP内部对象,为什么还要多此一举,通过pageContext对象来访问它们呢?这也正是pageContext对象应用较少的原因。话虽这样说,pageContext对象总是JSP中9个内置对象不可或缺的一部分,读者还是需要掌握它的用法的。
在JSP程序中,我们可以使用pageContext来代表pageContext对象:
<%
pageContext.Method();
%>
pageContext对象的主要用法如下。
1)getOut()
该方法返回一个JspWriter类的实例对象,也就是JSP内置对象——out对象,可以往客户端写入输入流。它的使用方法如下:
<%
JspWriter myout=pageContext.getOut();
myout.println(“myout write: hello world”+”<br>”);
out.println(“out write: hello world”);
%>
2)getSession()
该方法的返回值是一个HttpSession接口的实例对象,即JSP内置对象——session对象,可以保存不同用户的信息。它的使用方法如下:
<%
String username1=”george”;
String password1=”george”;
HttpSession mySession= pageContext. getSession();
mySession.putValue(“username”,username1);
mySession.putValue(“password”, password1);
%>
3)getPage()
该方法的返回值是一个java.lang.Object对象,也就是JSP内置对象——page对象。它的使用方法如下:
<%
Object mypage=pageContext.getPage();
out.println(mypage.toString());
%>
4)getResponse()
该方法的返回对象是javax.servlet.ServletResponse,也就是JSP内置对象——response对象,主要用于控制HTTP连接。它的使用方法如下:
<%
ServletResponse myresponse=pageContext.getResponse();
out.println(myresponse.getCharacterEncoding());
%>
5)getRequest()
该方法的返回对象是javax.servlet.ServletRequest,也就是JSP内置对象——request对象,主要用于获取客户端的信息。它的使用方法如下:
<%
ServletRequest myrequest=pageContext.getRequest();
out.println(myrequest.getRemoteHost());
String username2=”robin”;
String password2=”robin”;
myrequest.setAttribute(“username”,username2);
myrequest.setAttribute(“password”, password2);
%>
6)getException()
该方法的返回值是当前页的exception对象。它的使用方法如下:
<%
Exception myexception=pageContext. getException();
out.println(myexception.getMessage());
%>
上面的代码片段最好在错误处理程序中使用,也就是page编译指令的isErrorPage属性为true的页面中。
7)getServletConfig()
该方法可以返回当前的config对象,用于获取JSP/Servlet程序的初始参数。它的使用方法如下:
<%
ServletConfig myconfig=pageContext.getServletConfig();
%>
8)getServletContext()
该方法的返回值是一个ServletConfig接口的实例对象,也就是JSP内置对象——application对象的副本。它的使用方法如下:
<%
ServletContext myapplication=pageContext.getServletContext();
out.println(myapplication.getServerInfo());
String username3=”java”;
String password3=”java”;
myapplication.setAttribute(“username”,username3);
myapplication.setAttribute(“password”, password3);
%>
9)setAttribute(String name, Object o, int scope)
pageContext对象的setAttribute()方法可以将参数或者Java对象绑定到application对象、session对象、request对象或者page对象上,这里的scope参数可以取以下的值。
l pageContext.PAGE_SCOPE
l pageContext.REQUEST_SCOPE
l pageContext.SESSION_SCOPE
l pageContext.APPLICATION_SCOPE
当scope参数的值为pageContext.SESSION_SCOPE时,调用PageContext对象的setAttribute()方法和调用session对象的putValue()方法是等效的,都是将某个参数或者Java对象和当前的session绑定起来。如果scope参数的值为如果scope参数的值为pageContext.APPLICATION_SCOPE,那么调用PageContext对象的setAttribute()方法和调用application对象的setAttribute()方法是等效的。如果scope参数是其他的值,原理也是一样的,我们就不多说了。它的使用方法如下:
<%
pageContext.setAttribute(“username”,”george”,
pageContext.APPLICATION_SCOPE);
pageContext.setAttribute(“username”,”robin”,pageContext.
SESSION_SCOPE);
%>
10)getAttribute(String name, int scope)
pageContext对象的getAttribute()方法也可以直接获取和application对象、page对象、session对象、request对象相互绑定的参数或者Java对象的值。这个方法的scope参数的意义和上面讲的一样。如果scope参数的值是pageContext.REQUEST_SCOPE,那么getAtttribute()方法就在当前的request对象内部查找有没有绑定一个名为name的Java对象,如果有,就返回这个对象,如果没有,返回null值。如果scope参数的值是pageContext.APPLICATION_SCOPE,那么getAtttribute()方法的作用范围将是application对象。它的使用方法如下:
<%
pageContext.getAttribute(“username”, pageContext.APPLICATION_SCOPE);
pageContext.getAttribute(“username”, pageContext.SESSION_SCOPE);
%>
PageContext的更多相关文章
- JSP中的 HttpSession、pageContext对象
pageContext 隐含对象对应javax.servlet.jsp.PageContext,都自动的被加入至pageContext中, 您可以由它来取得与JSP相关的对应之Servlet对象,像是 ...
- page、pageContext、servletContext的区别
ServletContext是容器上下文,指当前的一个web应用的上下文 JSP网页本身,page对象是当前页面转换后的Servlet类的实例.从转换后的Servlet类的代码中,可以看到这种关系:O ...
- ${pageContext.request.contextPath}无效
发现在Tomcat7.0.58,在jsp页面使用${pageContext.request.contextPath}获取不到项目名称,网上找了很多答案试了都无效: 把Tomcat版本换成Tomcat7 ...
- pageContext对象的用法
(1) pageContext对象 这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据. pageContext是PageContext类的实例,使用pageContext可以访问page ...
- JSP 内置对象(request response session application out pageContext)
request对象 javax.servlet.http.HttpServletRequest接口的实例 request.setCharacterEncoding("utf-8" ...
- ${pageContext.request.contextPath} JSP取得绝对路径
一.问题 JSP中究竟采用绝对路径还是采用相对路径随着所采用技术的越来越复杂,这个问题也变得越来越难以解决. 1)采用相对路径遇到的问题 相对路径固然比较灵活,但如果想复制页面内的代 ...
- j2ee四大作用域pagecontext,request,session,ServletContext(转)
转自:(http://www.5ycode.com/63) 在JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性.范围定义了在什么时间内,在哪一个 ...
- 错误:javax.servlet.jsp.PageContext can not be to a type
在写Jsp文件时,引入script源文件(<script type="text/javascript" src="${pageContext.request.con ...
- maven中解决javax.servlet.jsp.PageContext cannot be resolved to a type
在eclipse环境下用maven出现:javax.servlet.jsp.PageContext cannot be resolved to a type. 这是由于没有引入jsp-api引发的问题 ...
随机推荐
- 轻松掌握:JavaScript状态模式
状态模式 状态模式(State)允许一个对象在其内部状态改变的时候改变它的行为,对象看起来似乎修改了它的类. 状态模式的使用场景也特别明确,有如下两点: 一个对象的行为取决于它的状态,并且它必须在运行 ...
- jQuery构造函数init参数分析(二)
接着上一篇随笔讨论. 如果selector是其他字符串情况就比较多了比较复杂了 // Handle HTML strings if ( typeof selector === "string ...
- jQuery实例集合
一.返回顶部 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- iOS UIView设置圆角
UIView设置圆角 1.比较简单的情况,UIView四个角都是圆角: UIView *aView = [[UIView alloc] init]; aView.frame = CGRectMake( ...
- Visual Studio 2013 的 Xamarin 安装教程
Xamarin 配置手册和离线包下载 http://pan.baidu.com/s/1eQ3qw8a 具体操作: 安装前提条件 1. 安装Visual Studio 2013,安装过程省略,我这里安 ...
- [SharePoint] SharePoint 错误集 1
1. Delete a site collection · Run command : Remove-SPSite –Identity http://ent132.sharepoint.hp.com/ ...
- 【Leafletjs】4.L.Map 中文API
L.Map API各种类中的核心部分,用来在页面中创建地图并操纵地图. 使用 example // initialize the map on the "map" div with ...
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q78-Q80)
Question 78 You are designing an application configuration approach for a custom SharePoint 2010 app ...
- 【ios】使用Block对POST异步操作的简单封装
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/3409721.html 一般情况下的POST异步操作需要实现以下 ...
- Android studio 使用SVN需要忽略的文件
Android Studio创建的Android项目一般需要忽略 1..idea文件夹 2..gradle文件夹 3.所有的build文件夹 4.所有的.iml文件 5.local.propertie ...