jsp

位置:IT落伍者 >> jsp >> 浏览文章

浅析JSP开发中的对象和范围属性


发布日期:2018年07月03日
 
浅析JSP开发中的对象和范围属性
在JSP页面中的对象包括用户创建的对象(例如JavaBean对象)和JSP的隐含对象都有一个范围属性范围定义了在什么时间内在哪一个JSP页面中可以访问这些对象例如session对象在会话期间内可以在多个页面中被访问application对象在整个Web应用程序的生命周期中都可以被访问在JSP中种范围如下所示

·page范围

具有page范围的对象被绑定到javaxServletjspPageContext对象中在这个范围内的对象只能在创建对象的页面中访问可以调用pageContext这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象(pageContext对象还提供了访问其他范围对象的getAttribute方法)pageContext对象本身也属于page范围当Servlet类的_jspService()方法执行完毕属于page范围的对象的引用将被丢弃page范围内的对象在客户端每次请求JSP页面时创建在页面向客户端发送回响应或请求被转发(forward)到其他的资源后被删除

·request范围

具有request范围的对象被绑定到javaxservletServletRequest对象中可以调用request这个隐含对象的getAttribute()方法来访问具有这种范围类型的对象在调用forward()方法转向的页面或者调用include()方法包含的页面中都可以访问这个范围内的对象要注意的是因为请求对象对于每一个客户请求都是不同的所以对于每一个新的请求都要重新创建和删除这个范围内的对象

·session范围

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

·application范围

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

下面我们通过几个简单的例子来看一下这种范围对象的应用

.测试page范围

testjsp

<%

pageContextsetAttribute(namezhangsan);

outprintln(testjsp: );

outprintln(pageContextgetAttribute(name));

outprintln(<p>);

pageContextinclude(testjsp);

%>

testjsp

<%

outprintln(testjsp: );

outprintln(pageContextgetAttribute(name));

%>

访问testjsp将看到如下的输出

testjsp: zhangsan

testjsp: null

说明保存在pageContext对象中的属性具有page范围只能在同一个页面中被访问

.测试request范围

修改testjsp和testjsp如下所示

testjsp

<%

requestsetAttribute(namezhangsan);

outprintln(testjsp: );

outprintln(requestgetAttribute(name));

outprintln(<p>);

pageContextinclude(testjsp);

%>

testjsp

<%

outprintln(testjsp: );

outprintln(requestgetAttribute(name));

%>

访问testjsp将看到如下的输出

testjsp: zhangsan

testjsp: zhangsan

说明保存在request对象中的属性具有request范围在请求对象存活期间可以访问这个范围内的对象

pageContextinclude(testjsp);

这一句注释起来先访问testjsp再访问testjsp可以看到如下输出

testjsp: null

这是因为客户端开始了一个新的请求

.测试session范围

修改testjsp和testjsp如下所示

testjsp

<%

sessionsetAttribute(namezhangsan);

%>

testjsp

<%

outprintln(testjsp: );

outprintln(sessiongetAttribute(name));

%>

先访问testjsp然后在同一个浏览器窗口中访问testjsp可以看到如下输出

testjsp: zhangsan

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

如果我们在访问完testjsp后关闭浏览器重新打开浏览器窗口访问testjsp将看到如下输出

testjsp: null

这是因为客户端与服务器开始了一次新的会话

.测试application范围

修改testjsp和testjsp如下所示

testjsp

<%

applicationsetAttribute(namezhangsan);

%>

testjsp

<%

outprintln(testjsp: );

outprintln(applicationgetAttribute(name));

%>

先访问testjsp然后关闭浏览器再打开浏览器窗口访问testjsp可以看到如下输出

testjsp: zhangsan

说明保存在application对象中的属性具有application范围在Web应用程序运行期间都可以访问这个范围内的对象

上一篇:如何打开jsp文件,JSP文件怎么打开?

下一篇:在JDBC设计中加速JSP访问数据库