一、会话技术
1、什么是会话技术:从打开一个浏览器访问某个网站,到关闭这个浏览器的过程,成为一次会话,
会话技术就是记录这次会话中客户端的状态和数据的。
2、会话技术分为cookie和session:
cookie :将数据存储在客户端本地,减少服务器端的存储压力,但是安全性不好,客户端可以清除cookie
session:将数据存储到服务器,相对安全,但是会增加服务器的压力
二、cookie 技术
1. 创建cookie对象
Cookie cookie = new Cookie("name","666"); //cookie里面要传两个string类型参数,并且不能是中文
2. 设置cookie在客户端的持久化时间
cookie.setMaxAge(66); //里面是秒
如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭 cookie信息销毁,
如果设置持久化时间,cookie信息会被持久化到浏览器的磁盘文件里一直到时间过期被销毁
3.设置cookie携带路径
cookie.setPath(String path); // 参数是路径
如果不设置携带路径,那么该cookie信息会在访问产生该cookie的web资源所在的路径都携带cookie信息
cookie.setPath("/test");
代表访问test应用中的任何资源都携带cookie
cookie.setPath("/test/cookie");
代表访问test项目中的cookie时才携带cookie信息
4. 以文件头的形式将cookie中存的数据发送到客户端 // set-cookie:"name=666"
response.addCookie(cookie);
5.删除客户端cookie(如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时间为0的cookie进行覆盖)
6.服务器端怎么接受客户端携带的Cookie
通过request.getCookie(); 获取所有的cookie,
Cookie [] cookie = request.getCookie(); //Cookie对象数组
遍历cookie数组,通过名称设置的cookie名称得到值
for(Cookie cookieObj:cookie){
if( "name".equal(cookieObj.getName())){ // 和name进行比较,是否是同一个cookie
String cookieValue = cookieObj.getValue(); //获取刚刚上面定义的cookie name值
}
}
三、session技术
session 技术是将数据存储在服务端的技术,会为每个客户端创建一个内存空间用来存储客户端数据,客户端每次都要带一个标识ID去服务器找属于自己的内存空间。session需要借助cookie存储客户端的唯一标示JSESSIONID
1.获得session 对象
HttpSession session = request.getSession(); // 此方法会获得属于当前会话的session对象,如果说当前session对象不存在,他自己会创建 一个新的session对象返回。(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)
2.怎样向session存取数据
session对象也具有如下三个方法:
session.setAttribute(String name,Object obj); //向session中存数据
session.getAttribute(String name); //向session中取数据
session.removeAttribute(String name); //移除数据
3.Session对象的生命周期
创建: 第一次执行reques.getSession()时候;
销毁:
a. 服务器(非正常)关闭时
b. session过期/失效(默认30分钟)
(时间的起算点 从何时开始计算30分钟?) =》从不操作服务器端的资源开始计时
可以在工程的web.xml中进行配置session过期时间
<session-config>
<session-timeout>30</session-timeout>
<session-config>
c.手动销毁session(): session.invalidate();
作用范围:一次会话中所有的资源共用一个session对象