JSP内置对象的作用域
在我们我学习JSP时,会常常用到JSP的内置对象(page,pagecontext,request,response,session,application,out ,exception,config)。其中(pageContext,request,session,application)这四个内置对象存在自己的有效范围。下面我们就简单演示一下。
(pageContext,request,session,application),这四个内置对象,只要能够获取到,就代表在其作用域中
1、在当前界面,
主要代码:
1 <h6>获取到的对象有:</h6> 2 <% pageContext.setAttribute("pageContext","pageContext对象");%> 3 <%= pageContext.getAttribute("pageContext")%><br> 4 5 <% request.setAttribute("request","request对象");%> 6 <%= request.getAttribute("request")%><br> 7 8 <% session.setAttribute("session","session对象");%> 9 <%= session.getAttribute("session")%><br> 10 11 <% application.setAttribute("application","application对象");%> 12 <%= application.getAttribute("application")%><br> 13 <a href="test2.jsp">test.jsp</a>
运行结果:
(说明这四个对象在当前界面都是有效的)
2、下面我们点击test.jsp链接,跳转界面(test.jsp界面代码如下↓)
1 <h6>获取到的对象有:</h6> 2 <%= pageContext.getAttribute("pageContext")%><br> 3 <%= request.getAttribute("request")%><br> 4 <%= session.getAttribute("session")%><br> 5 <%= application.getAttribute("application")%><br>
查看运行结果:
通过结果发现,pagecontext,request对象无法获取到了,原因就是因为:pagecontext存储的值,只是针对当前界面,当界面跳转之后,存储的值就无法获取到,request获取不到的原因是:request是单次请求当我们点击跳转时,相当于再次发送了一次请求,所以request就不能再次获取到了。
3、下面我们打开另外一个浏览器比如火狐:
结果,就只获取到了application对象,session对象获取不到的原因是:我们打开火狐浏览器,就意味着该客户端(就是之前的谷歌浏览器)已经与服务器断开了连接,结束了会话,所以之前存储的值就获取不到了,那么我们的application内置对象的作用域是什么呢?其实application有点类似于java的全局变量,只要我们的服务器不关闭,他就一直存在。
application小结一下:
pagecontext:只在当前界面有效
request:只作用于单次请求
session:作用于与服务器的会话,不关闭与副武器的会话,就会一直生效
application:只要服务器不关闭,就一直生效。