JSP中page和pageContext的区别
page java.lang.Object 对应this关键字。JSP网页本身,page对象是当前页面转换后的Servlet类的实例。从转换后的Servlet类的代码中,可以看到这种关系:Object page = this;在JSP页面中,很少使用page对象。 pageContext javax.servlet.jsp.PageContext 的实例,该对象代表该JSP 页面上下文,使用该对象可以访问页面中的共享数据。常用的方法有getServletContext和getServletConfig等。 //使用pageContext 设置属性,该属性默认在page 范围内 pageContext. setAttribute ("page" , "hello") ; //使用request 设置属性,该属性默认在request 范围内 request. setAttribute ("request" , "hello"); //使用pageContext将属性设置在request 范围中 pageContext.setAttribute("request2″ , "hello" , pageContext.REQUEST_SCOPE); //使用session将属性设置在session 范围中 session.setAttribute("session" , "hello"); //使用pageContext将属性设置在session范围中 pageContext.setAttribute("session2″ , "hello" , pageContext.SESSION_SCOPE); //使用application将属性设置在application范围中 application. setAttribute ("app" , "hello") ; //使用pageContext 将属性设置在application 范围中 pageContext.setAttribute("app2″ , "hello" , pageContext.APPLICATION_SCOPE) ;
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);
%>
jsp 有哪些内置对象?作用分别是什么? 分别有什么方法?
【答案】:
:JSP 共有以下9 个内置的对象:
request 用户端请求,此请求会包含来自GET/POST 请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet 正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page JSP 网页本身
exception 针对错误网页,未捕捉的例外
request 表示HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几
个用于获取cookie, header, 和session 数据的有用的方法。
response 表示HttpServletResponse 对象,并提供了几个用于设置送回浏览器的响应
的方法(如cookies,头信息等)
out 对象是javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回
送输出结果。
pageContext 表示一个javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围
的名字空间、servlet 相关的对象的API,并且包装了通用的servlet 相关功能的方法。
session 表示一个请求的javax.servlet.http.HttpSession 对象。Session 可以存贮用户的
状态信息
applicaton 表示一个javax.servle.ServletContext 对象。这有助于查找有关servlet 引擎
和servlet 环境的信息
config 表示一个javax.servlet.ServletConfig 对象。该对象用于存取servlet 实例的初始
化参数。
page 表示从该页面产生的一个servlet 实例
jsp有哪些内置对象?作用分别是什么?
答:JSP共有以下9种基本内置组件(可与ASP的6种内部组件相对应):request用户端请求,此请求会包含来自GET/POST请求的参数response网页传回用户端的回应pageContext网页的属性是在这里管理session与请求有关的会话期applicationservlet正在执行的内容out用来传送回应的输出configservlet的构架部件pageJSP网页本身exception针对错误网页,未捕捉的例外