Jsp中表达式语言pageContext的作用是什么,具体怎么用啊?
希望能详细说明一下pageContext的作用原理,举个实例最好,最重要是要知道是在JSP表达式里的pageContext!!谢谢...
希望能详细说明一下pageContext的作用原理,举个实例最好,最重要是要知道是在JSP表达式里的pageContext!!谢谢
展开
展开全部
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页面),session物件所设定的属性物件则限於同一个进程作用期间可以共用,而application物件所设定的属性,则在整个Web应用程式中的JSP页面都可以共用。
以下举application为例,您可以将一些物件当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性物件,例如:
<%
Stringattr="字串物件";
out.println("设定属性给application:"+attr);
application.setAttribute("str",attr);
%>
我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页:
<%
Stringattr=(String)application.getAttribute("str");
out.println("取得application属性:"+attr);
%>
由於我们之前已经将字串物件设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。
您可以使用pageContext物件来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、session、application来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定:
getAttribute(Stringname,intscope)
setAttribute(Stringname,Objectvalue,intscope)
removeAttribute(Stringname,intscope)
其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式:
<%
Stringattr="字串物件";
out.println("设定属性给application:"+attr);
pageContext.setAttribute("str",attr,pageContext.APPLICATION_SCOPE);
%>
<%
Stringattr=(String)pageContext.getAttribute("str",pageContext.APPLICATION_SCOPE);
out.println("取得application属性:"+attr);
%>
我们之前曾经使用过session的setAttribute()等方法设定一个进程可以共用的属性物件,使用session设定的属性在同一个进程中可以共用,除了session之外,还有pageContext、request、application也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共用的属性物件,只不过这四个物件所设定的属性其共用范围各不相同。
使用pageContext所设定的属性物件,其共用范围限於同一个JSP页面,使用request所设定的属性物件,其在同一个request处理期间可以共用(包括forward给其它JSP页面),session物件所设定的属性物件则限於同一个进程作用期间可以共用,而application物件所设定的属性,则在整个Web应用程式中的JSP页面都可以共用。
以下举application为例,您可以将一些物件当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性物件,例如:
<%
Stringattr="字串物件";
out.println("设定属性给application:"+attr);
application.setAttribute("str",attr);
%>
我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页:
<%
Stringattr=(String)application.getAttribute("str");
out.println("取得application属性:"+attr);
%>
由於我们之前已经将字串物件设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的物件,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等物件,只要在允许的作用范围中,就可以取得所设定的属性物件。
您可以使用pageContext物件来设定属性,并指定属性的作用范围,而不用使用个别的pageContext、request、session、application来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定:
getAttribute(Stringname,intscope)
setAttribute(Stringname,Objectvalue,intscope)
removeAttribute(Stringname,intscope)
其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式:
<%
Stringattr="字串物件";
out.println("设定属性给application:"+attr);
pageContext.setAttribute("str",attr,pageContext.APPLICATION_SCOPE);
%>
<%
Stringattr=(String)pageContext.getAttribute("str",pageContext.APPLICATION_SCOPE);
out.println("取得application属性:"+attr);
%>
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询