page、request、session、application的作用范围

  今天看孙卫琴的《精通Struts:基于MVCJavaWeb设计与开发》,对以前一个模棱两可的问题有了一个重新的认识。自己举了个小例子说明了下这个问题,也许有些地方不太恰当,不过用来说明这个问题还是可以胜任的。

  问题:page、request、session、application的作用范围?

  书中解答,此处只摘录重要语句:

  page:用户请求的当前页面;

  Request:用户请求访问的当前组件,以及和当前web组件共享同一用户请求的web组件。如:被请求的jsp页面和该页面用<include>指令包含的页面以及<forward>标记包含的其它jsp页面; 

  Session:同一个http会话中的web组件共享它;

  Application:整个web应用的所用web组件共享它。

 此处我举个例子说明

   一个网站MyWebSite,其包含7jsp页面,分别为master.jsp、top.jsp、main.jsp、foot.jsplogin.jsp、success.jsp和news.jsp。master.jsp页面通过<include>指令包含top.jsp、main.jsp、foot.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.jsp、master.jsp、top.jsp、main.jsp、foot.jsp中有效;
3.变量 test3 在7个页面中都有效(包括login.jsp和news.jsp);

4.变量 test4 在整个网站,当前也就是7个页面中都有效(包括login.jsp和news.jsp)。

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

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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值