最近整理了下会话管理的相关笔记,以下做个总结:

一、会话管理(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中的会话管理的更多相关文章

  1. Java中的会话管理——HttpServlet,Cookies,URL Rewriting(译)

    参考谷歌翻译,关键字直接使用英文,原文地址:http://www.journaldev.com/1907/java-session-management-servlet-httpsession-url ...

  2. Java 中的会话管理—— HttpServlet,Cookies,URL Rewriting(转)

    索引 1.什么是 Session? 2.Java 中的会话管理—— Cookie 3.Java Servlet 中的 Session —— HttpSession 理解 JSESSIONID Cook ...

  3. JavaWeb中Cookie会话管理,理解Http无状态处理机制

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512995108961387015/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...

  4. Spring3 Security 中配置会话管理

    账户登录时,要求一个账户同时只能一人登录,配置中的步骤有三个: 1.在web.xml中配置HttpSessionEventPublisher <listener> <listener ...

  5. JavaWeb中Session会话管理,理解Http无状态处理机制

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512955067434271246/ 1.<Servlet简单实现开发部署过程> 2.<Serv ...

  6. 使用Spring Session做分布式会话管理

    在Web项目开发中,会话管理是一个很重要的部分,用于存储与用户相关的数据.通常是由符合session规范的容器来负责存储管理,也就是一旦容器关闭,重启会导致会话失效.因此打造一个高可用性的系统,必须将 ...

  7. 在web中使用shiro(会话管理,登出,shiro标签库的使用)

    在shiro的主配置文件中配置,登出的请求经过的过滤器就可以了,在shiro的过滤器中有一个名称为logout的过滤 器专门为我们处理登出请求: 一.shiro会话管理器 shiro中也提供了类似于w ...

  8. 3种web会话管理的方式

    http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端. ...

  9. Nodejs之MEAN栈开发(八)---- 用户认证与会话管理详解

    用户认证与会话管理基本上是每个网站必备的一个功能.在Asp.net下做的比较多,大体的思路都是先根据用户提供的用户名和密码到数据库找到用户信息,然后校验,校验成功之后记住用户的姓名和相关信息,这个信息 ...

随机推荐

  1. ASP.NET 5 Identity

    ASP.NET 5 Identity   “跌倒了”指的是这一篇博文:爱与恨的抉择:ASP.NET 5+EntityFramework 7 如果想了解 ASP.NET Identity 的“历史”及“ ...

  2. 来选择一款适合你网站的CMS建站程序吧

    1:首页我们要搞清楚什么叫cms? ContentManagementSystem就是cms的全名,意思就是内容管理系统.cms整站系统是以文章系统为核心,增加用户需要的模块,如文章.图片.下载等,提 ...

  3. SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库)

    原文:SQLServer 2005 数据库定阅复制实现双机热备(主要是sharepoint 内容数据库) 场景 公司最近的sharepoint的数据库服务器老是出问题,并且在一旦出现问题,就导致无法正 ...

  4. 利用HttpClient抓取话费详单等信息

    由于项目需要,需要获取授权用户的在运营商(中国移动.中国联通.中国电信)那里的个人信息.话费详单.月汇总账单信息(需要指出的是电信用户的个人信息无法从网上营业厅获取).抓取用户信息肯定是要模仿用户登录 ...

  5. [译]ava 设计模式之享元

    (文章翻译自Java Design Pattern: Flyweight) 享元模式用于最小化内存开销.它做的就是使用其他相似的对象尽可能多的分享数据. 1.享元模式类图 2.享元模式Java代码 / ...

  6. Inno Setup connection to the database and create

    原文 Inno Setup connection to the database and create Description: the first half of this program in I ...

  7. 异步陷阱之IO

    异步陷阱之IO篇 很多教程和资料都强调流畅的用户体验需要异步来辅助,核心思想就是保证用户前端的交互永远有最高的优先级,让一切费时的逻辑通通放到后台,等到诸事完备,通知一下前端给个提示或者继续下一步.随 ...

  8. 手机新闻网站,掌上移动新闻,手机报client,jQuery Mobile手机新闻网站,手机新闻网站demo,新闻阅读器开发

    我们坐在地铁,经常来查看新浪手机新闻,腾讯新闻.或者刷微信看新闻更多功能.你有没有想过如何实现这些目标.移动互联网,更活泼. 因为HTML5到,jQuery Moblie到.今天我用jqm为了给你一个 ...

  9. 取得ASKII码值和汉语拼音

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAACmCAIAAACnXPjtAAAgAElEQVR4nO2de3wb1YHv56+7e/fe/e ...

  10. c++类的构造函数与析构函数

    为什么用构造函数与析构函数 构造函数: c++目标是让使用类对象就像使用标准类型一样,但是常规化的初始化句法不适用与类类型. ; //基本类型 struct thing { char *pn; int ...