【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 ...
随机推荐
- Lotus分析
一 Lotus的任务 Lotus是一个消息通知服务,topic和subscription是多对多的关系.后面我加了一个发送自定义邮件和自定义短信的功能. 产品里面有个监控报警和通知列表.监控报警里创建 ...
- 【PAT Advanced Level】1006. Sign In and Sign Out (25)
关键在于清空字符数组和使用scanf进行输入 #include <stdio.h> #include <string.h> #include <fstream> # ...
- Hive权限介绍
一.开启权限 眼下hive支持简单的权限管理,默认情况下是不开启.这样全部的用户都具有同样的权限.同一时候也是超级管理员.也就对hive中的全部表都有查看和修改的权利,这样是不符合一般数据仓库的安全原 ...
- Socket之UDP分包组包
一般传输大的文件和信息的时候需要涉及到分包和组包,方法有很多,下面一种是借鉴了别人的思路,供大家参考哈 分包 1.取出需要传输的文件和字符的长度和大小放入缓存区里面: 2.设定固定传输的长度,用需要传 ...
- 火车票硬座座位位置分布图、火车座位分布图 andydao
夏天要是坐火车硬座在火车上过夜的话,最好带一个小外套,以防睡觉着凉.
- iOS利用代理实现界面跳转
引入代理类头文件和要跳转到的界面头文件 -(void)aaa { //可以插入动画 LYXViewControllor * view = [LYXViewControllor new]; LYXDel ...
- Asp.Net 之 汉字转拼音
1.利用微软提供的拼音库,计算出汉字的拼音的方法,此方法支持多音字符 下载 Visual Studio International Pack类库,该类库扩展了.NET Framework对全球化软件开 ...
- c/c++指针基础使用
#include <iostream> #include <string> using namespace std; int main() { "; "; ...
- 用CentOS 7打造合适的科研环境
http://seisman.info/linux-environment-for-seismology-research.html 这篇博文记录了我用CentOS 7搭建地震学科研环境的过程,供我个 ...
- PayablebillImpl
package nc.impl.arap.payablebill; import java.util.List; import java.util.Map; import nc.bs.dao.Base ...