scope of page vs. requese vs. session vs. application

本文详细解析JavaWeb中的page、request、session及application四大域对象的作用范围与应用场景,并通过实例展示不同域对象的数据共享特性。

page,request,session 和application 都借助setAttribute()和getAttribute()来设定和取得其属性Attribute,通过这2种方法来做到数据共享

但是getAtttribute 对page食补起作用的,


page: 使用pageContext ---属性设置在当前页,跳转后无法获得


request:http请求到服务器处理结束,返回响应的整个过程。服务器跳转后,所有设置的内容依然会保留下来,客户端跳转不可以(forward 可以 href不可以)

session: 从浏览器打开到浏览器关闭这个过程。不管是服务器跳转还是客户端跳转,设置内容依然会保留下来(forward 和href都可以)----打开新的浏览器了属性设置就没了

application: 是整个应用,属性保存在服务器上的,任何人都可见。



看到一个很好的例子,引用一下(http://blog.youkuaiyun.com/lihongjian944043440/article/details/6942891)

此处我举个例子说明

一个网站MyWebSite,其包含7jsp页面,分别为master.jsptop.jspmain.jspfoot.jsplogin.jspsuccess.jspnews.jsp

master.jsp页面通过<include>指令包含top.jspmain.jspfoot.jsp三个页面,

当用户通过login.jsp登录成功后,进入success.jsp页面

然后通过此页面的<forward>标签跳转到master.jsp页面中。

我们在success.jsp页面中加入如下代码(此处用到jstl标签)

<c:set value="aaa" var="test1" scope=page” />
<c:set value="aaa" var="test2" scope=request” />
<c:set value="aaa" var="test3" scope=session” />
<c:set value="aaa" var="test4" scope=application” />

<jsp:forward page=master.jsp/ >这里一一说明

1.变量 test1 只在success.jsp内有效;
2.变量 test2 success.jspmaster.jsptop.jspmain.jspfoot.jsp中有效;
3.变量 test3 7个页面中都有效(包括login.jspnews.jsp)
4.变量 test4 在整个网站,当前也就是7个页面中都有效(包括login.jspnews.jsp)

Test3test4有效范围一样,有什么区别呢?

其实区别蛮大的,我只说明一点,假如此时又有另一个用户访问master.jsp页面,那么test3相对于这个用户来说就无效,而test4却是有效的。或者当第一个登录的用户关闭浏览器后,再重新访问master.jsp时,test3就无效,而test4却有效。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值