pageContext
pageContext对象
这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。
pageContext是PageContext类的实例,使用pageContext可以访问page、request、session、application范围的变量。
getAttribute(String name):取得page范围内的name属性。 getAttribute(String name,int scope):取得指定范围内的name属性,其中scope可以是如下4个值: PageContext.PAGE_SCOPE:对应于page范围。 PageContext.REQUEST_SCOPE:对应于request范围。 PageContext.SESSION_SCOPE:对应于session范围。 PageContext.APPLICATION_SCOPE:对应于application范围。 与getAttribute()方法相对应,PageContext也提供了2个对应的setAttribute()方法,用于将指定变量放入page、request、session、application范围内。实例:
<%@page contentType="text/html;charset=gb2312"%>
<html><head><title>pageContext对象_例1</title></head>
<body><br>
<%
//使用pageContext设置属性,该属性默认在page范围内
pageContext.setAttribute("name","jason test");
request.setAttribute("name","霖苑编程");
session.setAttribute("name","霖苑计算机编程技术培训");
//session.putValue("name","计算机编程");
application.setAttribute("name","培训");
%>
page设定的值:<%=pageContext.getAttribute("name")%><br>
request设定的值:<%=pageContext.getRequest().getAttribute("name")%><br>
session设定的值:<%=pageContext.getSession().getAttribute("name")%><br>
application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>
范围1内的值:<%=pageContext.getAttribute("name",1)%><br>
范围2内的值:<%=pageContext.getAttribute("name",2)%><br>
范围3内的值:<%=pageContext.getAttribute("name",3)%><br>
范围4内的值:<%=pageContext.getAttribute("name",4)%><br>
<!--从最小的范围page开始,然后是reques、session以及application-->
<%pageContext.removeAttribute("name",3);%>
pageContext修改后的session设定的值:<%=session.getValue("name")%><br>
<%pageContext.setAttribute("name","应用技术培训",4);%>
pageContext修改后的application设定的值:<%=pageContext.getServletContext().getAttribute("name")%><br>
值的查找:<%=pageContext.findAttribute("name")%><br>
属性name的范围:<%=pageContext.getAttributesScope("name")%><br>
</body></html>
页面显示结果:
page设定的值:jason test
request设定的值:霖苑编程
session设定的值:霖苑计算机编程技术培训
application设定的值:培训
范围1内的值:jason test
范围2内的值:霖苑编程
范围3内的值:霖苑计算机编程技术培训
范围4内的值:培训
pageContext修改后的session设定的值:null
pageContext修改后的application设定的值:应用技术培训
值的查找:jason test
属性name的范围:1
2.PageContext对象取得其他隐含对象的方法Exception getException( ) 回传网页的异常,不过此网页要为error page,JspWriter getOut( ) 回传网页的输出流,例如:outObject getPage( ) 回传网页的Servlet 实体(instance),例如:pageServletRequest getRequest( ) 回传网页的请求,例如:requestServletResponse getResponse( ) 回传网页的响应,例如:responseServletConfig getServletConfig( ) 回传此网页的ServletConfig 对象,例如:configServletContext getServletContext( ) 回传此网页的执行环境(context),例如:applicationHttpSession getSession( ) 回传和网页有联系的会话(session),例如:session3.PageContext对象提供取得属性的方法Object getAttribute(String name, int scope) 回传name 属性,范围为scope的属性对象,回传类型为ObjectEnumeration getAttributeNamesInScope(int scope) 回传所有属性范围为scope 的属性名称,回传类型为Enumerationint getAttributesScope(String name) 回传属性名称为name 的属性范围void removeAttribute(String name) 移除属性名称为name 的属性对象void removeAttribute(String name, int scope)移除属性名称为name,范围为scope 的属性对象void setAttribute(String name, Object value, int scope) 指定属性对象的名称为name、值为value、范围为scopeObject findAttribute(String name) 寻找在所有范围中属性名称为name 的属性对象常见的用法
在使用struts时,需要从jsp页面中指向struts中定义的方法时,可以使用如下的写法(这里是在一个表单中请求action方法的示例)<form action="${pageContext.request.contextPath}/pathOfYourAction"enctype="multipart/form-data"method ="post">file: <input type ="file"name="upload_file"><input type ="submit"value="upload file"/></form >