Servle中的会话管理
最近整理了下会话管理的相关笔记,以下做个总结:
一、会话管理(HttpSession)
1、Web服务器跟踪客户状态的四种方法:
1)、使用Servlet API的Session机制(常用)
2)、使用持久的Cookie对象;
3)、使用URL重写机制;
4)、使用隐藏的表单域;
2、会话:一个客服与服务器之间的不中断请求相应序列。
3、会话管理机制:
1)、第一次请求时,由于不包含任何的会话ID,服务器为该客户创建一个HttpSession对象,并指定一个唯一的会话ID;
2)、响应时,将会话ID与相应一起发送给客户,通过Set-Cookie相应头实现;
3)、客户收到相应,将会话ID存储在内存中,当再次请求时,通过Cookie请求头把会话ID与请求一起发送过去;
4)、服务器收到请求并看到会话ID,将查找之前创建的会话对象,并将该请求会话ID相同的会话对象关联。
4、HttpSession接口:
1)、public String getId():返回该会话指定唯一标识符;
2)、public long getCreationTime():返回会话创建的时间;
3)、public long getLastAccessedTime():返回会话对象最后被访问的时间;
4)、public boolean isNew():若会话对象未与任何对象关联,返回true;
5)、public ServletContext getServletContext():返回会话所属的ServletContext对象;
6)、public void SetAttribute(String name,Object value):将制定的一个名称和值的属性绑定到会话对象;
7)、public Object getAttribute(String name):返回绑定到会话对象上制定名称的属性值;
8)、public Enumeration getAttributeNames():返回绑定到会话上的属性名的Enumeration对象;
9)、public void removeAttribute(String name):从会话对象中删除绑定的指定名称的属性。
5、使用Httpsession对象:
1)、为客户创建或获得与请求关联的会话对象;
2)、在会话对象中添加或删除键值对属性;
3)、如需要可以使会话失效;
public HttpSession getSession(boolean create):返回与当前请求关联的HttpSession对象,若没有则创建一个新的会话对象;
public HttpSession getSession():等价于getSession(true);
public void setMaxInactiveInterval(int interval):设置在容器中会话失效前客户的两个请求之前最大间隔秒数,负数则永不失效;
public int getMaxInactiveInterval():返回以秒为单位的最大间隔时间;
public void invalidate():使会话失效 并解除绑定到其上的任何对象
二、通过Cookie支持会话 (服务器在客户硬盘上存放的一小段文本信息)
1、Cookie API
1)、public Cookie(String name,String value):name为cookie的名称,value为cookie的值;(Cookie的构造方法)
2)、public String getName():返回Cookie名称,一旦创建不能改变;
3)、public String getValue():放回Cookie的值;
4)、public void serValue():为Cookie制定新的值;
5)、public void setMaxAge(int expiry):设置Cookie在浏览器最长的存活时间,负值表示不删除,0则表示直接删除;
6)、public int getMaxAge():返回最长存活时间;
7)、public void setDomain():设置Cookie所在域;
8)、public void getDomain():返回Cookie所在域;
Coolie管理会话包含两个方面:将Cookie发送到客户端、从客户端读取Cookie。
2、向客户端发送Cookie
1)、创建Cookie对象
Cookie userCookie = new Cookie(“user”,“伫望碧落”);
2)、设置Cookie最大存活时间
userCookie.setMaxAge(60*60*24*7);
3)、向客户端发送Cookie
response.addCookie(userCookie);
3、从客户端读取Cookie
1)、调用请求对象的getCookie方法
Cookie[] cookies = request.getCookies();
2)、对Cookie数组循环遍历,查找对应的Cookie
三、URL重写与隐藏表单域
1、URL重写:当用户单击URL时,会话ID被自动作为请求行的一部分而不是作为头行发送到服务器
1)、public String encodeURL(String url):返回带会话ID的URL,主要用于Servlet发出的一般的URL;
2)、public String encodeRedirectURL(String url):返回带会话ID的URL,主要用于SendRedirect()方法的URL进行解码;
3)、注意事项:
(1)、应在应用程序的所有页面中,对所有的URL编码,包括多有的超链接和表单Action属性;
(2)、所有页面的都应该为动态;
(3)、多有静态HTML页面必须通过Servlet运行,在它将页面发送给用户时重写URL;
2、隐藏表单域
<input type="hidden" name="zhuwangbiluo" />
仅支持由表单提交而动态生成时使用
出处:http://blog.csdn.net/cl05300629/article/details/9338693 作者:伫望碧落
Servle中的会话管理的更多相关文章
- Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)
参考谷歌翻译,关键字直接使用英文,原文地址:http://www.journaldev.com/1907/java-session-management-servlet-httpsession-url ...
- Java 中的会话管理—— HttpServlet,Cookies,URL Rewriting(转)
索引 1.什么是 Session? 2.Java 中的会话管理—— Cookie 3.Java Servlet 中的 Session —— HttpSession 理解 JSESSIONID Cook ...
- JavaWeb中Cookie会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- Spring3 Security 中配置会话管理
账户登录时,要求一个账户同时只能一人登录,配置中的步骤有三个: 1.在web.xml中配置HttpSessionEventPublisher <listener> <listener ...
- JavaWeb中Session会话管理,理解Http无状态处理机制
注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512955067434271246/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...
- 使用Spring Session做分布式会话管理
在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...
- 在web中使用shiro(会话管理,登出,shiro标签库的使用)
在shiro的主配置文件中配置,登出的请求经过的过滤器就可以了,在shiro的过滤器中有一个名称为logout的过滤 器专门为我们处理登出请求: 一.shiro会话管理器 shiro中也提供了类似于w ...
- 3种web会话管理的方式
http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端. ...
- Nodejs之MEAN栈开发(八)---- 用户认证与会话管理详解
用户认证与会话管理基本上是每个网站必备的一个功能.在Asp.net下做的比较多,大体的思路都是先根据用户提供的用户名和密码到数据库找到用户信息,然后校验,校验成功之后记住用户的姓名和相关信息,这个信息 ...
随机推荐
- 事半功倍之StyleCop(一)
事半功倍之StyleCop(一) 前言 曾几何时,你是否在看别人代码的时候总是在抱怨代码没有注释,命名不规范,代码风格不统一,代码可读性差?是否有一个适合团队开发规范的检查工具? 答案就是大名鼎鼎的S ...
- leetcode先刷_Unique Binary Search Trees II
可能没想到,人的简单方法,关于质询的问题提出做. 如何把产生出来的所有的树木?所使用的方法当然是递归,但是有一个致命的问题,假设根节点,然后做一个递归,所以这是非常多的公共树木的根,结果肯定是一团糟. ...
- java 中关于json的使用方法
json在数据传输起了很大的作用,下面说说java中json的使用方法. 文章参考:http://www.codes51.com/article/detail_99574.html json串示例 [ ...
- dom02
事件对象:在触发DOM上的事件时dou都会产生一个对象,事件对象event DOM中的事件对象 1)type属性 用于获取事件类型 2)target属性 用于获取事件目标 3)stopPropagat ...
- 浅析深究什么是SOA?
浅析深究什么是SOA? http://blog.vsharing.com/fengjicheng/A1059842.html 金蝶中间件有限公司总经理 奉继承 博士 阅读提示: 本文探讨SOA概念背后 ...
- each与list的用法
each与list的用法(PHP学习) 1.each的用法 先看API array each ( array &$array ) api里是这么描述的:each — 返回数组中当前的键/值对并 ...
- POJ 1028 Web Navigation 题解
考查代码能力的题目.也能够说是算法水题,呵呵. 推荐新手练习代码能力. 要添加难度就使用纯C实现一下stack,那么就有点难度了,能够使用数组模拟环形栈.做多了,我就直接使用STL了. #includ ...
- GIMP也疯狂之动态图的制作(四)
本篇文章为gimp制作动态图的第四篇.在之前的基础上简单的拓展了下思路.就能做出蛮实用的动态图.本文将介绍两个动态图.第一个为在一张静态图上添加动态图,第二个图为修改部分渐变. 效果: 素材: 其实, ...
- html5 音频和视频(audio And video)
1.音频和视频 Web 上的视频 直到现在,仍然不存在一项旨在网页上显示视频的标准. 今天,大多数视频是通过插件(比如 Flash)来显示的.然而,并非所有浏览器都拥有同样的插件. HTML5 规定 ...
- js判断浏览器类型(手机和电脑终端)
工作中经常会用到通过js来判断浏览器的功能!今天这里通过js来判断浏览器是来自移动设备还是pc设备! 代码如下: var browser={ versions:function(){ var u = ...