JSP学习笔记之二

JSP学习笔记之二

JSP学习笔记之二

——对象和范围

JSP页面中的对象,包括用户创建的对象(例如,JavaBean对象)和JSP的隐含对象,都有一个范围属性。范围定义在什么时间内,在哪一个JSP页面中可以访问这些对象。例如,session对象在会话期间,可以在多个页面中被访问。application对象在整个Web应用程序的生命中都可以被访问。在JSP中,有4种范围,如下所示:

 

page范围

 

具有page范围的对象被绑定到javax.servlet.jsp.PageContext对象中,在这个范围内的对象,只能在创建对象的页面中访问。可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。

eg

test1.jsp

<%

pageContext.setAttribute("name","zhangsan");

out.println(pageContext.getAttribute("name"));

out.println("<br>");

pageContext.include("test2.jsp");

%>

 

test2.jsp

<%

out.println(pageContext.getAttribute("name"));

%>

访问test1.jsp

张三

null

 

request范围

 

具有request范围的对象被绑定到javax.servlet.ServletRequest对象中,可以调用request这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在调用forward()方法转向的页面或者调用include()方法包含的页面中,都可以访问这个范围的对象。

egtest1.jsp

<%

request.setAttribute("name","zhangsan");

out.println(request.getAttribute("name"));

out.println("<br>");

pageContext.include("test2.jsp");

%>

test2.jsp

<%

out.println(request.getAttribute("name"));

%>

访问test1.jsp

zhangsan
zhangsan

 

session范围

 

具有session范围的对象被绑定到javax.servlet.http.HttpSession对象中,可以调用session这个隐含对象中getAttribute()方法来访问具有这种范围类型的对象。JSP容器为每一次会话,创建一个HttpSession对象,在会话期间可以访问session范围内的对象。

egtest1.jsp

<%

session.setAttribute("name","zhangsan");

%>

test2.jsp

<%

out.println(session.getAttribute("name"));

%>

访问test1.jsp,然后在同一浏览器中访问test2.jsp

zhangsan

说明保存在session对象中的属性具有session范围,在会话期间,可以访问这个范围内的对象。

 

application范围

 

具有application范围的对象被绑定到javax.servlet.ServletContext中,可以调用application这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象。在web应用程序运行期间,所有的页面都可以访问在这个范围内的对象。

egtest1.jsp

<%

application.setAttribute("name","zhangsan");

%>

test2.jsp

<%

out.println(application.getAttribute("name"));

%>

先访问1,关闭浏览器在访问2,都不为空了。说明保存在application对象中的属性具有application范围,在整个web应用程序运行期间,都可以访问这个范围内的对象。

你可能感兴趣的:(JSP学习笔记之二)