20160329javaweb之JSP -session入门
2016-03-29 21:09
651 查看
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329194840848-40710921.jpg)
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329194902629-1794304105.jpg)
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329194941066-1694732360.jpg)
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329195013598-2067009445.jpg)
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329195041957-1313519978.jpg)
![](https://images2015.cnblogs.com/blog/778706/201603/778706-20160329195133801-407598457.jpg)
3.Session
Session 是一个域
!!作用范围:当前会话范围
!!生命周期:
当程序第一次调用到request.getSession()方法时说明客户端明确的需要用到session此时创建出对应客户端的Session对象.
当session超过30分钟(这个时间是可以在web.xml文件中进行修改的)没有人使用则认为session超时销毁这个session.
程序中明确的调用session.invalidate()方法可以立即杀死session.
当服务器被非正常关闭时,随着虚拟机的死亡而死亡.
*如果服务器是正常关闭,还未超时的session会被以文件的形式保存在服务器的work目录下,这个过程叫做session的钝化.下次再正常启动服务器时,钝化着的session会被恢复到内存中,这个过程叫做session的活化.
!!作用:在会话范围内共享数据
!!session 的原理:
request.getSession()方法会检查请求中有没有JSESSIONID cookie,如果有拿出他的值找到对应的session为他服务.
如果没有则检查请求的URL后有没有以参数的形式带着JSESSIONID过来,如果有则找到对应的Session为浏览器服务器
如果还找不到则认为这个浏览器没有对应的Session,创建一个Session然后再在响应中添加JSESSIONID cookie,值就是这个Session 的id
默认情况下,JSESSIONID 的path为当前web应用的名称,并且没有设置过MaxAge,是一个会话级别的cookie.
这意味着一旦关闭浏览器再新开浏览器时,由于JSESSIONID丢失,会找不到之前的Session
我们可以手动的发送JSESSIONID cookie,名字和path设置的和自动发送时一样,但是设置一下MaxAge,使浏览器除了在内存中保存JSESSIONID信息以外还在临时文件夹中以文件的形式保存,这样即使重开浏览器仍然可以使用之前的session
以下并不常用
URL重写:
如果浏览器禁用了Cookie,浏览器就没有办法JSESSIONID cookie,这样就用不了Session了.
我们可以使用URL重写的机制,在所有的超链接后都以参数的形式拼接JSESSIONID信息,从而在点击超链接时可以使用URL参数的方式待会JSESSIONID,从而使用Session
将URL进行重写拼接上JSESSIONID的过程就叫做URL重写
request.getSession() --在URL重写之前一定要先创建出Session,才有Session id,才能进行重写
response.encodeURL()--- 一般的地址都用这个方法重写
response.encodeRedirectURL() --- 如果地址是用来进行重定向的则使用这个方法
*url重写的方法一旦发现浏览器带回了任意cookie信息,则认为客户端没有禁用cookie,就不会再进行重写操作
相关文章推荐
- 简单复利计算java板
- Spring 3.0 + Atomikos构建jta分布式事务
- JAVA 死锁实例
- 2016-03-29-Spring框架
- 我看过的最好最实用的String文章
- 深入理解 Java 虚拟机-类初始化
- 遭遇重创,一失足,回到"解放"前:项目文件全部为空,无法导入到eclipse中
- Myeclipse中文乱码问题
- 深入理解 Java 虚拟机-Java 内存区域与内存溢出
- java变量3
- Thrift 示例(包含自定义异常, 枚举, 传输Java Bean)
- 白话Spring(中级篇)---拦截器(上)
- Java基础知识强化之IO流笔记78:NIO之 FileChannel
- SE Springer小组之《Spring音乐播放器》可行性研究报告一、二(转载)
- 深入理解 Java 虚拟机-Java 代码编译和执行的整个过程
- eclipse 中maven编译出现问题-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOM
- SSH图片上传
- java中List对象列表去重或取出以及排序
- 20145229吴姗珊两天小总结 《Java程序设计》第4周学习总结
- 深入理解 Java 虚拟机之走进Java