【JSP&Servlet学习笔记】4.会话管理
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.会话管理的更多相关文章
- java web Servlet 学习笔记 -3 会话管理技术
Cookie和HttpSession 什么是会话: 用户开一个浏览器,点击多个超链接,访问服务器多个web资源,然后关闭浏览器,整个过程称之为一个会话. 每个用户在使用浏览器与服务器进行会话的过 ...
- jsp/servlet学习三之会话管理初解
由于http的无状态性,使得会话管理或会话跟踪成为web应用开发一个无可避免的主题.默认下,一个web服务器无法区分一个http请求是否为第一次访问.例如,一个web邮件应用要求用户登陆后才能查看邮件 ...
- jsp&servlet学习笔记
1.路径引用问题 一个css.jsp.html.或者javascript文件从从一个工程复制到另一工程,如果引用的时候使用的时相对路径,看似没有错误,但是却一直引用不进来,这时候要使用绝对路径,这样才 ...
- JSP&Servlet学习笔记----第4章
HTTP是基于请求/响应的无状态的通信协议. 使服务器记得此次请求与之后请求关系的方式,叫做会话管理. 隐藏域:由浏览器在每次请求时主动告知服务器多次请求间必要的信息.仅适用于一些简单的状态 管理,如 ...
- JSP&Servlet学习笔记----第1/2章
HTML(HyperText Markup Language):超文本标记语言 HTTP(HyperText Transfer Protocol):超文本传输协议 URL(Uniform Resour ...
- JSP&Servlet学习笔记----第3章
Web容器是JSP/Servlet唯一认识的HTTP服务器. HTTP是基于请求/响应的无状态通信协议. 流程: 1.请求来到HTTP服务器 2.HTTP服务器将请求转交给Web容器 3.Web容器创 ...
- JSP&Servlet学习笔记----第5章
Servlet进阶API 每个Servlet都必须由web容器读取Servlet设置信息(标注或者web.xml).初始化. 对于每个Servlet的设置信息,web容器会为其生成一个ServletC ...
- 【JSP&Servlet学习笔记】5.Servlet进阶AIP、过滤器与监听器
Servlet接口上,与生命周期及请求服务相关的三个方法是init().service()与destory()方法.当Web容器加载Servlet类并实例化之后,会生成ServletConfig对象并 ...
- JSP Servlet学习笔记——使用fileupload上传文件
关键代码如下: index.jsp <body> <center> <h3>文件上传</h3> <font color="red&quo ...
随机推荐
- HDU4279(2012年天津网络赛---数论分析题)
题目:Number 题意: 给出一个f(x),表示不大于x的正整数里,不整除x且跟x有大于1的公约数的数的个数.定义F(x),为不大于x的正整数里,满足f(x)的值为奇数的数的个数.题目就是求这个F( ...
- TFS上使用Beyond Compare来比较源码
In Visual Studio, go to the Tools menu, select Options, expand Source Control, (In a TFS environment ...
- cocos2d-x 纹理深入研究
转自:http://blog.csdn.net/qq51931373/article/details/9152227 1.纹理控制. 看此代码: CCSprite *pSprite = CCSprit ...
- ASP.net中的Cache使用介绍
1.1.1 摘要(http://www.cnblogs.com/rush/archive/2012/06/30/2571438.html) 最近我们的系统面临着严峻性能瓶颈问题,这是由于访问量增加,客 ...
- 模拟京东商城登陆HttpRequest
利用Winform HttpRequest 模拟登陆京东商城 目前只获取订单信息,可以获取图片等其他信息 using System; using System.Collections.Generic; ...
- 日志文件C++ 时间 文件 行数
#include <stdio.h> #include<windows.h> #include <time.h> #define Line __LINE__ #de ...
- WINAPI 变量(2861个)
WINAPI 变量(2861个) 这是从 c:\Program Files\Windows Kits\8.1\Include\um\WinUser.h 这个文件 中提取的 CTRL+F 查看变量所 ...
- 编写函数,以读模式打开一个文件,将其内容读入到一个string的vector中,将每一行作为一个对立的元素存于vector中
#include<iostream> #include<string> #include<vector> #include<fstream> using ...
- UNIX标准化及实现之功能测试宏
在头文件中定义了很多POSIX.1和XSI的符号.但是除了POSIX.1和XSI的定义之外,大多数实现在这些头文件中也加上了它们自己的定义.如果在编译一个程序时,希望它只使用POSIX定义而不使用任何 ...
- window.top、window.parent
iframe和frameset中可能会用到window.parent.window.top 其中window.parent是相对于打开子页面的当前js所在页面的层级: 例如:a页面中包含一个ifram ...