先看看对session的一个比较好的阐述:
session就是一个会话 ,在浏览器不关闭的前提下,可以保存用户的信息,就是象一个临时的容器,来存放这些临时的东西。比如登录的保存用户信息从一个网页跳转到另一个网页,用户信息就可以用session保存网站购物车可以用session实现
为什么需要Session
这是为了填补 Http 协议的局限,当用户去访问一个页面,服务端返回完了请求(如,你访问完一个网页,这个页面将页面内容,界面UI呈现给你),就算是结束了,就断开了,服务端不再去追踪客户端(浏览器)的任务状态,所以 Http 的每次请求都是独立的,非连续的,Http 也称为无状态协议。那我们如果想在一个场合,或是一个特定过程,操作些用户自己的数据,就会很麻烦,甚至很危险。比如你可以通过 url 传参数的方式与服务器交互,并实现操作;
Session(会话) 的出现就解决了这样的问题,Session是创建在服务端的,在一定的时间后,由服务端来消毁。在这段时间,客户端与服务端的会话就会保持着,客户端就会利用服务端上的 Session 信息来找到或操作一些数据;
如何使用 Session
Java Api 只给我们一种方式来 获取 当前会话相关的 session:
1
2
3
|
HttpSession session = request.getSession(); //或 HttpSession session = request.getSession( boolean ); |
设置值:
1
|
session.setAttribute( "key" , 值对象); |
获取值:
1
2
3
|
对象类型 obj = (对象类型)session.getAttribute( "key" ); //如 String name = (String)session.getAttribute( "key" ); |
删除 session 指定属性健:
1
|
session.removeAttribute( "key" ); |
清除所有的session,使当前 session 完全失效:
1
|
session.invalidate(); |
session超时周期设置
1. Tomcat 安装位置 conf/web.xml :
1
2
3
|
<session-config> <session-timeout> 30 </session-timeout> </session-config> |
30分种
2. Tomcat 安装位置 conf/server.xml :
1
2
3
4
|
<Context path= "/test" docBase= "/test" defaultSessionTimeOut= "3600" isWARExpanded= "true" isWARValidated= "false" isInvokerEnabled= "true" isWorkDirPersistent= "false" /> |
单位为 秒
3. Java 代码设置:
1
2
|
HttpSession session = request.getSession(); session.setMaxInactiveInterval( 1200 ); |
0 分种:
其他说明:
1. session 过期情况:
1>. 客户端浏览器关闭:
2>. session 会话过期;
3>. 客户端会话调用了 .invalidate();
2. 浏览器关闭与session是否还在;
当客户端浏览器关闭后,session 在服务端还是会存在一定时间的,只是当浏览器器再次打开时,就会生成一个新的 session ,浏览器通过生成的 sessionid 属性来 匹配服务端的 session; 那上次的session 虽然还在,但是就访问不到了;
3. <% @ page session="false" %> 是什么情况?:
这句话的意思是,当前不能使用 session, 但是 页面 session 还是可以创建的;
4. session 在什么时候 被创建:
在 程序 调用 HttpServletRequest.getSession(true) 时创建;如果 页面没有使用 <%@ page session="false"%> 时,在 jsp 页面编译成 Servlet 时,会自动 加上 HttpSession session = HttpServletRequest.getSession(true);
总结
以上就是本文关于了解java中的session的全部内容,希望对大家有所帮助。如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!
原文链接:https://www.cnblogs.com/editor/p/4114873.html