Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联。

隐藏字段是将状态信息以窗体中看不到的输入字段回应给浏览器,在下次发窗体时一并发送这些隐藏的输入字段值。Cookie是保存在浏览器上的一个小文件,可设定存活期,在浏览器请求Web应用程序时,会一并将属于网站的Cookie发送给应用程序。URL重写是使用超链接,并在超链接的URL地址附加信息,以GET的方式请求Web应用程序。

如果你要创建Cookie,可以使用Cookie类,创建时指定Cookie中的名称与数值,并使用HttpServletResponse的addCookie()方法在响应中新增Cookie。可以使用setMaxAge()来设定Cookie的有效期限,预设是关闭浏览器之后Cookie就失效。

执行HttpServletRequest的getSession()可以取得HttpSession对象。在会话阶段,可以使用HttpSession的setAttribute()方法来设定会话期间要保留的信息,利用getAttribute()方法就可以取得信息。如果要让HttpSession失效,则可以执行invalidate()方法。

HttpSession是Web容器中的一个Java对象,每个HttpSession实例都会有个独特的SessionID。容器默认使用Cookie于浏览器存储SessionID,下下次请求时,浏览器会将包括SessionID的Cookie送至应用程序,应用程序再根据SessionID取得相对应的HttpSession对象。

如果浏览器禁用Cookie,则无法使用Cookie在浏览器储存SessionID,此时若打算运用HttpSession来维持会话信息,则可使用URL重写机制。HttpServletResponse的encodeURL()方法在容器无法从Cookie中取得SessionID时,会将设定给它的URL附上SessionID,以便设定URL重写时的超链接信息。HttpServletResponse的encodeRedirectURL()方法则可以让你要求浏览器重定向网页时,在URL附上SessionID的信息。

执行HttpSession的setMaxIncativeInterval()方法,设定的是HttpSession对象在浏览器多久没活动就失效的时间,而不是储存SessionID的Cookie失效时间。HttpSession是用于当次会话阶段的状态维持,如果有相关的信息,希望在关闭浏览器后,下次开启浏览器请求Web应用程序时,仍可以发送给应用程序,则要使用Cookie。

【JSP&Servlet学习笔记】4.会话管理的更多相关文章

  1. java web Servlet 学习笔记 -3 会话管理技术

     Cookie和HttpSession 什么是会话: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 每个用户在使用浏览器与服务器进行会话的过 ...

  2. jsp/servlet学习三之会话管理初解

    由于http的无状态性,使得会话管理或会话跟踪成为web应用开发一个无可避免的主题.默认下,一个web服务器无法区分一个http请求是否为第一次访问.例如,一个web邮件应用要求用户登陆后才能查看邮件 ...

  3. jsp&servlet学习笔记

    1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...

  4. JSP&Servlet学习笔记----第4章

    HTTP是基于请求/响应的无状态的通信协议. 使服务器记得此次请求与之后请求关系的方式,叫做会话管理. 隐藏域:由浏览器在每次请求时主动告知服务器多次请求间必要的信息.仅适用于一些简单的状态 管理,如 ...

  5. JSP&Servlet学习笔记----第1/2章

    HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...

  6. JSP&Servlet学习笔记----第3章

    Web容器是JSP/Servlet唯一认识的HTTP服务器. HTTP是基于请求/响应的无状态通信协议. 流程: 1.请求来到HTTP服务器 2.HTTP服务器将请求转交给Web容器 3.Web容器创 ...

  7. JSP&Servlet学习笔记----第5章

    Servlet进阶API 每个Servlet都必须由web容器读取Servlet设置信息(标注或者web.xml).初始化. 对于每个Servlet的设置信息,web容器会为其生成一个ServletC ...

  8. 【JSP&Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器

    Servlet接口上,与生命周期及请求服务相关的三个方法是init().service()与destory()方法.当Web容器加载Servlet类并实例化之后,会生成ServletConfig对象并 ...

  9. JSP Servlet学习笔记——使用fileupload上传文件

    关键代码如下: index.jsp <body> <center> <h3>文件上传</h3> <font color="red&quo ...

随机推荐

  1. discuz!版本号信息改动步骤

    建完网站后,就到了改动discuz! 论坛的步骤了,,将其改动为自己喜欢的样子.是非常有意思的,废话不多说了.以下给大家介绍改动的方法. 1.[改动后台-首页的版权]打开ftp.连接网站,进入到:/f ...

  2. Java Singleton 单例模式

    大家可能还听过 Singleton  也就是单例模式 这个单例模式要求 在程序的运行时候   一个程序的某个类 只允许产生一个 实例 那么 这个类就是一个单例类 Java Singleton模式主要作 ...

  3. Codeforces Round #325 (Div. 2) D. Phillip and Trains BFS

    D. Phillip and Trains Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/586/ ...

  4. java并行调度框架封装及演示样例

    參考资料:  阿里巴巴开源项目 CobarClient  源代码实现. 分享作者:闫建忠 分享时间:2014年5月7日 ---------------------------------------- ...

  5. 几种sap增强的查找方法

    ***方法一**************************************** 通过SE30,运行TCODE后,点Evaluate后,查看运行时间分析评估:命中清单. 找以“exit”开 ...

  6. C#_MVC_Repository_CRUD_Model

    using System.Collections.Generic; using System.ComponentModel.DataAnnotations; namespace iFlytekDemo ...

  7. C#_delegate - 值参数和引用参数

    值参数不能加,引用参数可以. 引用参数是共享的 using System; using System.Collections.Generic; using System.Linq; using Sys ...

  8. Middleware

    Middleware The middleware gives a single shot to the views associated into Controllers, before execu ...

  9. Java HashMap 如何正确遍历并删除元素

    (一)HashMap的遍历 HashMap的遍历主要有两种方式: 第一种采用的是foreach模式,适用于不需要修改HashMap内元素的遍历,只需要获取元素的键/值的情况. HashMap<K ...

  10. iOS 8创建交互式通知

    iOS 8提供了一个令人兴奋的新API来创建交互式通知(interactive notifications),它能让你在你的应用之外为用户提供额外的功能.我发现网上还没有关于如何实现它的比较好的示例教 ...