jsp内置对象【02】四种内置对象【02】session、application
我们继续来学习,上一篇文章中说到了request属性,那么既要想客户端和服务端都都能实现跳转的话,就用到了session。
第三种:session属性
我们接着修改一下上一篇文章中的代码来对比一下:
- Session_01.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
- <html>
- <head>
- <title>web开发</title>
- </head>
- <body>
- <% //设置属性
- session.setAttribute("name","赵玉强"); //将赵玉强赋给name
- %>
- <a href="session_02.jsp">通过连接访问</a>
- </body>
- </html>
- Session_02.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
- <html>
- <head>
- <title>web开发</title>
- </head>
- <body>
- <% //设置属性
- String username=(String)session.getAttribute("name");
- %>
- <h2>姓名:<%=username%></h2>
- </body>
- </html>
运行一下就会发现,即使是以超链接的形式,也依然能够接受参数。可见session的属性范围的确是比request大了。session是一个应用广泛的属性。它有一个响亮的名字:一次性会话机制。
我们先来看一个问题。在浏览器上运行session_01.jsp这个页面,会跳转到session_02.jsp上,这个时候不要关闭浏览器,在地址栏中直接输入session_02.jsp的地址,可以发现会直接显示session_02.jsp的内容,那我们关闭浏览器,在重新打开一个新的浏览器,直接输session_02.jsp的地址,一运行,结果不显示值了。那么问题就来了,为什么重新开启一个浏览器就不行了呢?这就是session的特点:一次性会话机制。
什么是session的会话?
会话就行我们在打电话一样,我们双方都在通讯,如果有一个挂断了,那么这次会话就结束了。session也是一样的。先输入session_01.jsp地址,然后跳转后,session就会保存在当前的浏览器中,即使直接输入session_02.jsp的地址,依然能显示。但是如果在打开一个新的浏览器的话,则就无法取得之前设置的session了,因为每一个session只保存在当前的浏览器中,并且可以从相关的页面中取得。
对于服务器而言,每一个连接到它的客户端都是一个session。
可见,即使session的属性范围比request扩大了,但是依然存在着限制。要想重新打开浏览器还会显示,那就得使用application属性范围了。
第四种:application属性
我们从上图中可以看出,所有的application属性直接保存在服务器上,直接属性服务器管辖的范围了,不在受其他的一些因素影响。即使是浏览器关闭了,只要服务器没有关闭,依然可以进行操作。
我们来验证一下,还是拿上述的的代码修改一下,为了对比明显。
- Application_01.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
- <html>
- <head>
- <title>web开发</title>
- </head>
- <body>
- <% //设置属性
- application.setAttribute("name","赵玉强");
- %>
- <a href="page02.jsp">通过连接访问</a>
- </body>
- </html>
- Application_02.jsp
- <%@ page language="java" contentType="text/html" pageEncoding="utf-8" %>
- <html>
- <head>
- <title>web开发</title>
- </head>
- <body>
- <% //设置属性
- String username=(String)application.getAttribute("name");
- %>
- <h2>姓名:<%=username%></h2>
- </body>
- </html>
运行看一下,即使新开一个浏览器,直接输入application_02.jsp的地址,也依然能够显示内容。
但是如果服务器关闭了,那就无法取得了。
经过上一篇http://zhaoyuqiang.blog.51cto.com/6328846/1130617和这一篇的学习,我们一起学习了jsp内置对象中的最重要的四种内置对象。从学习中可以看出,四种内置对象page、request、session和application的属性范围是依次扩大的,那么有的同学就直接用最大的,这样多省事了。这个问题就坚决避免的。因为属性范围越大,对于服务器的性能影响也就越大,这个时候就给出了一个原则: 能使用page范围的就不要使用request,能使用request范围的就不要使用session,能使用session的就不要使用application。这对初学者简单的做个项目可能不会有多大影响,但是公司做的项目影响可就大了,所以同学们要养成一个好的习惯。
注意的是,内置对象中的所有的方法都应该在Java Servlet Api 中查找,而不是学习java的时候用的那个API,Java Servlet Api在本页的最后有下载,是英文版本的,有的同学可能不喜欢,不过英文版本的才是原汁原味的,你可以把方法复制下来去谷歌百度翻译。
转载于:https://blog.51cto.com/zhaoyuqiang/1131062
jsp内置对象【02】四种内置对象【02】session、application相关推荐
- Spring Data JPA-JPA对象的四种状态
Spring Data JPA-JPA对象的四种状态 JPA对象的四种状态 临时状态:刚创建出来,∙没有与EntityManager发生关系,没有被持久化,不处于EntityManager中的对象.实 ...
- 回过头来看对象的四种状态强软弱虚引用的理解
一.对象的四种引用状态描述 在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用(Strong Reference).软引用(Soft Reference).弱引用(Weak Refe ...
- Struts2教程6:在Action类中获得HttpServletResponse对象的四种方法
在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和request.而在Struts2中,并没有任何参数,因此,就不能简单地从execute方法获得H ...
- 在Action类中获得HttpServletResponse对象的四种方法
Struts2:在Action类中获得HttpServletResponse对象的四种方法 在struts1.x Action类的execute方法中,有四个参数,其中两个就是response和req ...
- 用spring管理和实例化对象的四种方式
用spring管理和实例化对象的四种方式 方式一:无参构造函数(最常用) 对象是spring创建,创建的对象还要交给spring容器管理 bean:豆子 id:在spring容器中Hello对象的名, ...
- jsp九大内置对象和四种属性范围介绍
一般对象需要实例化才可以调用,而JSP的内置对象是不用实例化就可以直接调用的对象. 总共有9个,对应如下表: 序号 对象 类型 1 pageContext javax.servlet.jsp.Page ...
- Jsp学习总结(1)——JSP九大内置对象和四种属性范围解读
一.四种属性范围 1.1.在JSP中提供了四种属性保存范围 page:在一个页面内保存属性,跳转之后无效 request:在一次服务请求范围内,服务器跳转后依然有效 session:-在一次会话范围内 ...
- Java对象的四种引用方式
本文会按照以下思路进行: (1)Java的四种对象引用的基本概念 (2)四种对象引用的差异对比 (3)对象可及性的判断以及与垃圾回收机制的关系 (4)引用队列ReferenceQueue的介绍 (5) ...
- Java对象的四种引用
前言 在JDK1.2之前,创建的对象只有在处于可触及(reachable)的状态下,才能被程序使用.也就是说,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.垃圾回收器一旦发现这些无用对象, ...
最新文章
- 关于exchange 2013输入账号密码后owa空白页解决方法
- 用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。...
- 小白的算法初识课堂(part1)--二分查找法
- jq循环取数据 ,一直记不住,放到这
- 【转】Apache Solr 访问权限控制
- Monkey测试执行指导
- 阅读作业二-----读Lost in CatB有感 by 李栋
- 百度富文本php配置方法
- 什么软件可以搜C语言题答案,C语言题库(带答案)-排版Word版
- 智能车制作——从元器件、机电系统、控制算法到完整的智能车设计|文末赠书
- 深度学习教程(4) | 深层神经网络(吴恩达·完整版)
- 动效给程序员用什么格式_超炫酷的H5动效!学若干招让程序猿帮你实现吧-动画-程序员-_ 卡酷动画片...
- 谈谈订单号和流水号的关系
- 【H3C模拟器】基于端口VLAN的交换机配置实验(同一vlan互通)
- 基于VUE + Echarts 实现可视化数据大屏智慧校园可视化
- 领导人要读的10本管理学书籍
- 20190803——python文件操作
- 2018深信服java笔试题_2018校招深信服编程题与面试题
- 天玑9200搭载Arm最新旗舰GPU,性能爆表!支持移动端硬件光追
- NASA庆祝地球日:50年地球最精美图片亮相(转载)
热门文章
- Android studio | From Zero To One ——初级控件(屏幕显示)
- MFC与Matlab编程总结 (以《Matlab与C/C++混合编程技术(第三版)》-刘维 第五章 生成DLL为例)
- 回首2020,我们砥砺前行
- Debug Pytorch: ValueError: Expected more than 1 value per channel when training, got input size tor
- Debug Tensorflow: TypeError: Cannot convert a symbolic Keras input/output to a numpy array.
- python源码精要(6)-CPython编译标志
- c++17(6)-数学 函数
- 【NLP】向量检索模型落地:瓶颈及解法!
- (GitHub标星6.9k)超详细的人工智能专家路线图,
- 【CVPR2020论文解读】300米远程深度估计:港科大重磅开源自动驾驶深度感知新技术,远超现有雷达...