Servlet——Session(1)之基础知识
来源:互联网 发布:网络交换机类型的杂志 编辑:程序博客网 时间:2024/06/14 08:37
Session之基础知识
思考两个问题:
1. 大家在网上买东西,张三和李四他们购买的商品不一样,他们的购物车中显示的商品也不一样,这是怎么实现的?
2. 不同的用户登录网站后,不管该用户浏览该网站的哪个页面,都可以显示登录人的名字,同样可以随时去查看自己的购物车中的商品,这是怎么实现的?
Session技术
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的session对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
当用户打开浏览器,访问某个网站操作session时,服务器就会在服务器的内存为该浏览器分配一个session对象,该session对象被这个浏览器独占。
这个session对象也可以看做是一个容器,session默认存在时间为30min,你可以修改。
看如下示意图:
Session可以用来做什么
- 网上商城中的购物车
- 保存登录用户的信息
- 将某些数据放入到Session中,供同一用户的各个页面使用
- 防止用户非法登录到某个页面!
如何理解Session
session不是特别好理解,你可以把session看做是一容器类似于HashMap,有两列。每一行就是session的一个属性。
每个属性包含两个部分,一个是该属性的名字(String),另外一个是它的值(Object)
那么,如果同一个用户浏览器,向session设置一个属性的时候,如果名字相同,会出现什么情况?
结论:跟Cookie一样,这个值会更新,会替换为新的值
Session基本使用
- 得到session
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
2.向session中添加属性
- 1
- 1
3.从session中得到某个属性
- 1
- 1
4.从session中删除某个属性
- 1
- 1
可以做如下测试:
Servlet1生成session,并放入属性,它的doGet方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
从Chrome浏览器打开Servlet1,可以看到结果:
Servlet2获取session,并读取属性,它的doGet方法:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
再从Chrome浏览器打开Servlet2,可以看到结果:
这是在同一个浏览器中打开的两个不同的标签页,那么如果我们换一个浏览器呢,比如换成MicroSoft Edge浏览器:
可以看到这时候name和age都是null,也就是没有从session对象中取出值,因为Edge浏览器并没有运行Servlet1来创建Session对象,上面的session对象是Chrome浏览器独占的。
要强调的是,因为session是存在于服务器的内存中的,所以session对象的值也是可以存放对象的,并不像Cookie一样,仅仅是字符串!
比如,我们可以把一个User对象放入session对象中:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
之后,我们可以从session对象中取出这个User对象:
- 1
- 2
- 1
- 2
Session生命周期
session中的属性的默认生命周期是30min,这个默认时间可以通过修改web.xml文件来修改
这样修改:
1.在Tomcat根目录\conf\web.xml文件中修改:
- 1
- 2
- 3
- 1
- 2
- 3
这样修改会对所有的web应用生效。
2.如果只需要对某一个web应用设置,则只需要修改对应web应用的web.xml文件。在这个web.xml文件中添加如上的代码,比如你要设置为10分钟,则添加:
- 1
- 2
- 3
- 1
- 2
- 3
除了设置默认生命周期之外,最重要的是在程序中设置,调用setMaxInacttiveInterval(int interval)
,这里的interval是以秒为单位的,而且这个方法设置的是发呆时间,比如你设置的是60秒,那么在这60秒之内如果你没有操作过session,它就会自动删除,如果你操作过,不管是设置属性还是读取属性,它都会从头开始计时。
- 1
- 1
这个应用很广:比如我们逛购物网站,如果我们登录成功并且一直在操作、浏览网页,那么这个会话(Session)就一直保持,也就是我们一直处于登录状态。而如果我们隔了一段时间没有逛这个网站了,那么再逛的时候就会看到自己是未登录状态,因为会话(Session)已经过期了。
如果重启Tomcat,或者reload自己的web应用,或者关机了,那么web应用的session就会失效,这个结论很明显,因为session是存在于服务器的内存中的。
另外,我们也可以通过函数来让session失效:invalidate()
,这个函数清除session,删除一切会话。它通常用于安全退出某个网站。
要注意的是,
invalidate()
函数是清除所有session,如果你只要清除一个单个的属性,那么就要使用session.removeAttribute()
方法。
Session小结
1.session是存在服务器的内存中的
2.一个浏览器独享一个session域对象
3.session中可以存放多个属性
4.session中可以存放对象
5.如果session设置的属性存在重名,则会替换为新的值
转载来自:http://blog.csdn.net/gavin_john/article/details/51355292
- Servlet——Session(1)之基础知识
- Servlet——Session(1)之基础知识
- Java Web基础知识之Servlet:Session管理
- Java Web基础知识之Servlet(3):Session管理
- Java Web基础知识之Servlet(3):Session管理
- Servlet—Session
- Servlet体验之旅(二)——Session、Cookie
- Servlet——Session(2)之简单应用
- 基础知识之session
- Servlet 之Cookie、Session
- Servlet之Session 处理
- Servlet之Session处理
- session之servlet
- 【复习】servlet之session
- Servlet之Session
- servlet之session
- Java Web基础知识之Servlet(2):深入Servlet——HttpServlet
- Java Web基础知识之Servlet(2):深入Servlet——HttpServlet
- 最全面的常用正则表达式大全 zz
- Learning Tensorflow (3)
- treelist绑定两个表格
- 切片(python笔记)
- python+selenium+autoit实现文件上传
- Servlet——Session(1)之基础知识
- linux内核 驱动 硬件
- Github简易教程
- 二分查找
- Linux里新建文件/目录的默认权限
- HDU 6169 Senior PanⅡ 数论+DP
- HDU
- MySql常用命令总结
- Java中类、抽象类、接口的联系与区别