JSP中的4个Scope Object

Scope在English中的意思是范围,JSP中有四个限定范围的对象,分别是Page,Request,Session,Application;它们的范围依次增大!~
  通俗点来说,这个范围就像变量的作用域一样!
  一、Page
  Page顾名思义就是页面的意思,它的范围最小,只作用在单一Page中,跑出这个Page就失效!可以分别用pageContext对象的getAttribute()和setAttribute()方法获得和设置属性值。
Page1.jsp

 

  1. <html>  
  2. <head>  
  3.   <title>  
  4.     Page1.jsp   
  5.   </title>  
  6. </head>  
  7. <body>  
  8. <%    pageContext.setAttribute("userName","Tony");    pageContext.setAttribute("Pin","0907");  %>  
  9. <jsp:forward page="PageScope2.jsp"/>  
  10. </body>  
  11. </html>  

 

Page2.jsp

 

  1. <html>  
  2. <head>  
  3.   <title>  
  4.     Page2.jsp   
  5.   </title>  
  6. </head>  
  7. <body>  
  8. <%    String Name=(String)pageContext.getAttribute("userName");    String Password = (String)pageContext.getAttribute("Pin");    out.println("Name = "+Name);    out.println("Password = "+ Password);  %>  
  9. </body>  
  10. </html>  

 

(语法加亮插件不支持JSP,HTML加亮搞得参差不齐,看着真别扭 T^T)
当Page1.jsp forward到Page2.jsp中后,Page Scope对象失效,因此在Page2.jsp中执行的结果是Name=null Password=null。所以,如果数据设置为Page范围的话,数据只能在同一个页面上取得,其它页面都无法获得该数据。

  二、Request

  Request的范围限定在请求和被请求的两个页面之间,随后这个属性就失效了。可以分别用request对象的getAttribute()和setAttribute()方法获得和设置属性值。如果有很多页面,范围都限定为Request的话,对象中的属性就一直生效并且可以在页面中传递使用。

  参考以上Page1.jsp和Page2.jsp两个页面,如果把里面的pageContext对象换成request,Page2.jsp中就能正常输出结果:Name=Tony Password=0907

  三、Session

  Session,即会话的意思。它的作用范围是客户端与服务器建立持续连接的那段时间,与服务器断开连接后,这个属性失效。方法依然是上述的set和get,对象是session。例如上淘宝购物,用户登陆后,服务器与用户的Session就一直维持着,直到用户关掉浏览器。

  四、Application

  范围最大,时间最长,作用于整个Web Application中,也就说整个系统的页面都能使用application对象中的属性。就像全局变量要慎重使用,application对象使用不当会对服务器造成负担,所以三思而后用!

 

  JSP中使用Java Bean,也要为一个Bean限制作用范围(默认为Page)。四个范围解释同上。使用方法是在定义一个Bean时说明:<jsp:useBean id="redBean" class="coreservlets.RedBean" scope="page|request|session|application" />

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值