1. 引言
生活中的会话:人和人之间一次沟通的过程。
Web技术中:打开浏览器访问资源结束后关闭浏览器,这个活动的周期则为浏览器和服务器的会话。
2. Cookie
常用方法
//创建cookie对象
Cookie cook = new Cookie("name","xxx");
//响应信息中添加Cookie
//res.setHeader("Set-Cookie", "name=lisi");
res.addCookie(cook);
//获取Cookie信息
//接收从浏览器请求的Cookie信息
Cookie[] cookies = req.getCookies();
细节:
//设置Cookie路径
Cookie cook = new Cookie("name","xxx");
Cook.setPath(“”);
注意:默认路径为web应用的名称
//设置Cookie时间
//设置cookie的时间,默认浏览器关闭时删除
//参数如下
//正数过期时间(单位:秒)将Cookie信息存入硬盘
//负数将Cookie信息存入内存,浏览器关闭则消失。
//0将同名cookie删除
//cook.setMaxAge(0);
注意:
1. Cookie只支持非中文的字符串。
2. 浏览器一般只允许存放300个Cookie,每个站点最多存放20个Cookie,每个Cookie的大小限制为4KB。
3. HttpSession
域对象,作用保存和获取数据,共享数据。
特点:Cookie保存在客户端,只能存非中文字符串。
Session 保存在服务器(内存中),可以存对象。(将sessionID存在客户端)
3.1 核心方法
//获取Session对象
//特点:判断请求头中有没有JSESSIONID
//如果没有,没有则新建session,并创建新的JSESSIONID
//如已经存在JSESSIONID,则根据该ID去查询或创建Session
HttpSession session = req.getSession();
//根据JSESSIONID查找session,如没查到,不创建session
HttpSession session = req.getSession(false);
//域对象相关方法
//设置session
//得到session的id
getId();
//设置session在服务器上的过期时间
setMaxInactiveInterval(int interval)
//删除session
//使用配置文件配置session的过期时间
<session-config>
<!-- 单位:分钟 -->
<session-timeout>60</session-timeout>
</session-config>
//如希望浏览器重新开打后还保存JSESSIONID
//可以设置cookie时间(将cookie[JSESSIONID]包存在硬盘中)
//获取sessionid
String id = session.getId();
Cookie coo = new Cookie("JSESSIONID",id);
coo.setMaxAge(60*60*24);
res.addCookie(coo);