四大范围对比
来源:互联网 发布:linux怎么新建文件 编辑:程序博客网 时间:2024/06/06 02:41
为了更方便的了解四大内置对象的具体范围,我设计了一个简单的jsp页面,通过逐个甩掉页面中的值来确定范围
1、这个页面可以获取所有给内置对象设置的值
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><h1>a.jsp</h1><% pageContext.setAttribute("a", "页面范围");request.setAttribute("a", "请求范围");session.setAttribute("a", "回话范围");application.setAttribute("a", "应用范围");%><%=pageContext.getAttribute("a") %><br /><%=request.getAttribute("a") %><br /><%=session.getAttribute("a") %><br /><%=application.getAttribute("a") %><br />这是页面展示
2、之后再页面加入另一行代码:这个代码的主要功能是转发,转发的特点是页面请求只有一次,服务器会自己找到需要的页面
<jsp:forward page="b.jsp"></jsp:forward>结果展示:
结果分析:通过这个页面可以发现,第一个pageContext也就是页面范围已经没有数据了其他数据还在,因此可以得出结论,页面范围只要出了定义数据的那个页面,数据就不会存在。
3、b.jsp中有一行代码,作用是超链接
<a href="c.jsp">c.jsp</a>
结果展示:
结果分析:通过这个页面发现请求范围没了
原因分析:request请求范围只有在同一请求中才可以使用,而不管是使用超链接还是重定向都属于第二次请求,因此请求范围没了
3、关闭所有页面(会话),重新打开浏览器,输入最后的网址
结果展示:
结果分析:会话范围,在jsp中特指从打开网站的第一个页面开始,到关闭网站的所有页面为止,为一次会话范围,因此当关闭所有页面再直接打开获取页面的时候会话范围没有了,因为上一次会话已经结束了,这次会话还没有给它设置值
4、重启服务器,重新部署web应用
结果展示:
结果分析:应用范围存在于这个web应用中,只要你这个服务没有重启过,它就会一直存在
jsp中四大范围分析,由小到大依次是:pageContext < request < session < application
通过上面例子我们可以发现,除了pageContext以外,其他3个范围都可以在不同页面之间传递数据,那么应该如何选择呢?
原则是:能用小范围,就不要用大范围。
理由:因为小范围内的数据,占用内存的时间少, 要知道,request sessionapplication都是由web服务器创建的,占用的都是web服务器的内存,当a.jsp把参数传递给b.jsp以后,内存就应该释放。
- 四大范围对比
- jsp 四大域范围
- 四大作用域范围
- 【面试】四大共享范围
- jsp 四大属性范围
- 四大搜索引擎对比
- 四大图片缓存对比
- JSP定义和四大范围
- ognl 获取服务器 四大范围中的值
- 【JSP开发】JSP的四大范围(转)
- 四大流行Ajax框架综合对比
- 四大顶级Java编程工具横向对比
- 掌握设计四大原则中的对比原则
- 四大Hybrid App移动开发平台对比
- Android 四大图片缓存原理、特性对比
- Android 四大图片缓存原理,特性对比
- 直方图对比,各种方法的范围
- 中国典型的四大骨干网络及其IP地址范围
- java代码遍历目录下的所有文件(查找对应目录下的所有文件)
- 文章标题Maven在Eclipse构建web项目
- LE gatt 第三方应用无法搜索到蓝牙低功耗设备
- python隔离虚拟环境拷贝至服务器
- 让你自己编写的Android的Launcher成为系统中第一个启动应用程序
- 四大范围对比
- teamviewer
- ExtJS流程总结(一)
- JS中的继承
- DDD & Microservices
- python rabbitmq 延迟队列
- git flow常用命令
- BZOJ 3799 字符串重组 贪心模拟乱搞
- vi & vim