Java Web笔记 – Sessoin的使用
本文由发表于6年前 | J2EE | 暂无评论 |  被围观 1 views+
1、Web服务器跟踪客户状态的四种方法:2、Session的运行机制:3、Session相关方法:4、Session的生命周期:4.1、Session结束生命周期:4.2、Session的过期:
1、Web服务器跟踪客户状态的四种方法:
① 建立含有跟踪数据的隐藏字段
② 重写包含额外参数的URL
③ 使用持续的Cookie
④ 使用Servlet API中的Session
2、Session的运行机制:

当一个Session开始时,Servlet容器,将创建一个HttpSession对象,在HttpSession对象中可以存放客户的相关信息。

Servlet容器为HttpSession分配一个唯一的Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。

每次客户端发送HTTP请求时,Servlet容器可以根据HttpServletRequest对象读取Session ID,从而找到相应的HttpSession对象获取用户的相关信息。

因为客户端的关闭,服务器不知道,所以需要设置Session的有效期。

3、Session相关方法:
getId
String getId()
Returns a string containing the unique identifier assigned to this session. The identifier is assigned by the servlet container and is implementation dependent.
Returns: 
a string specifying the identifier assigned to this session
invalidate
void invalidate()
Invalidates this session then unbinds any objects bound to it.
Throws: 
IllegalStateException - if this method is called on an already invalidated session

这个方法使得Session失效,从而产生新的Session

void setAttribute(String name,
                  Object value)
Binds an object to this session, using the name specified. If an object of the same name is already bound to the session, the object is replaced.
Object getAttribute(String name)
Returns the object bound with the specified name in this session, or null if no object is bound under the name.
boolean isNew()
Returns true if the client does not yet know about the session or if the client chooses not to join the session. For example, if the server used only cookie-based sessions, and the client had disabled the use of cookies, then a session would be new on each request.
Returns: 
true if the server has created a session, but the client has not yet joined
Throws: 
IllegalStateException - if this method is called on an already invalidated session
setMaxInactiveInterval
void setMaxInactiveInterval(int interval)
Specifies the time, in seconds, between client requests before the servlet container will invalidate this session. A negative time indicates the session should never timeout.
Parameters: 
interval - An integer specifying the number of seconds

两个请求之间少于这个间隔时间,则Session不会失效。默认值为30分钟

也可以在web.xml文件中设置Session有效期的默认时间:

<session-config>
    <session-timeout>30</session-timeout>
</session-config>
4、Session的生命周期:

当用户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的Session。

接下来当用户浏览该Web应用的不同网页时始终访问同一个Session。

默认情况下,JSP都支持Session,可以显示声明:

<%@ page session="true" %>
4.1、Session结束生命周期:

以下情况下,Session将会结束生命周期,Servlet容器将Session所占用的资源释放掉:

a、Session过期
b、服务器调用了HttpSession的invalidate()方法(注销用户时可以使用)

注意:客户端关闭浏览器时并不会结束Session的生命周期。因为虽然关闭浏览器时Session ID对应的Cookie(该Cookie位于浏览器的进程上,会话Cookie)销毁了,但是服务器端的Session仍然存在。

4.2、Session的过期:

当Session开启后的规定时间内没有和Web服务器交互,这个Session就会失效。可以通过HttpSession的setMaxInactiveInterval()方法设置允许Session保持不活动状态的时间,如果超过这个时间,Session就会失效。

除了文章中有特别说明,均为IT宅原创文章,转载请以链接形式注明出处。
本文链接:http://www.itzhai.com/java-web-notes-sessoin-use.html
关键字: ,
arthinking Java技术交流群:280755654,入门群:428693174 more
分享到:
 
2011 11/12
如果您有更好的原创技术博文或者观点,欢迎投稿:admin@itzhai.com,或者关注订阅左侧浮动面板的微信号订阅IT宅itread)发送消息。
文章评论
    没有评论
给我留言

有人回复时邮件通知我
J2EE的相关文章
随机文章 本月热门 热评
1 Chrome插件开发实例 – 时间通知(notifications) 2013/6/13
2 JVM笔记 – 高效并发(Java内存模型与线程) 2015/3/1
3 Android中的常用控件及其基本用法 2011/7/12
4 Linux中sed和awk的使用及其相关实例解析 2011/6/11
5 可行性研究-数据流图 数据字典 2011/7/1
6 jQuery使用数组编写向左滚动的图片栏 2011/5/15
友情推荐 更多
破博客 文官洗碗安天下,武将打怪定乾坤。多么美好的年代,思之令人泪落。
Mr.5's Life 白天是一名程序员,晚上就是个有抱负的探索者
行知-追寻技术之美 关注大数据,分布式系统
我爱编程 编程成长轨迹
Cynthia's Blog 学习笔记 知识总结 思考感悟
 
猜您喜欢
欢迎关注我的公众号 IT宅
关于IT宅 文章归档

IT宅中的文章除了标题注明转载或有特别说明的文章,均为IT宅的技术知识总结,学习笔记或随笔。如果喜欢,请使用文章下面提供的分享组件。转载请注明出处并加入文章的原链接。 感谢大家的支持。

联系我们:admin@itzhai.com

Theme by arthinking. Copyright © 2011-2015 IT宅.com 保留所有权利.