会话技术
所谓的会话过程就是指从打开浏览器到关闭浏览器的过程。
一次会话: 打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器。
cookie技术:是有web服务器保存在用户浏览器(客户端)上
session技术:是将数据保存到服务器端,session技术的实现依赖于cookie技术
Cookie技术 (不能存中文)
在购物网站上去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Cookie空间中, Cookie空间为此对象绑定一个唯一的标识然后以响应头方式返回给客户端,当再去购买裤子的时候会带着这个唯一标识以请求头的方式存入到Cookie空间中,同时为它绑定唯一的标识。因为Cookie域保存在自己浏览器内部,与别人互不干扰,但因为是客户端技术,所以安全性不高。具体如下图所示:
发送cookie常用方法
1.设置cookie持久化存储时间:setMaxAge(40);单位为s/秒
2.设置cookie携带路径:setPath("/WEB05/SendCookieServlet");
3.发送cookie:response.addCookie(cookie);
获取cookie方法
一般步骤为:
1..获取请求中所有的cookie所在的数组
2.遍历cookie数组取到每一个cookie对象
例:
1 //1.获取请求中所有的cookie所在的数组 2 Cookie[] cookies=request.getCookies(); 3 //2.遍历cookie数组取到每一个cookie对象 4 for(Cookie cookie:cookies){ 5 if (cookie.getName().equals("goods")) { 6 String value=cookie.getValue(); 7 System.out.println(value); 8 } 9 }
session技术 (可中文)
Session技术就是另一种会话技术,也叫做服务器端技术。Session的底层也是基于Cookie的,只不过有自己的改变。
和Cookie一样,去买一件上衣,这个时候就会把上衣这个对象存入的开辟的Session空间中, Session空间为此对象生成一个唯一的Key值,当再去购买裤子的时候会带着这个唯一的Key值存入到Cookie空间中,同时为它绑定唯一的Key值。因为Session域同样保存在自己浏览器内部,与别人互不干扰,它相较于Cookie而言是服务器技术,较安全。具体如下图所示:
Tomcat默认session超时时间为30分钟。
Cookie域的常用方法:
1.获取session对象:
HttpSession session=request.getSession();
2.通过Session来存入内容,然后来获取这指定的值,或添加指定的值
session.setAttribute("name", "张三");
3.获取jsessionid
String id=session.getId();
4.创建cookie对象替代jsessionid
Cookie cookie=new Cookie("JSESSIONID", id);
5.获取session域中的值
String name=(String)session.getAttribute("name");
应用示例:
1 //获取session对象 2 HttpSession session=request.getSession(); 3 session.setAttribute("name", "张三"); 4 //获取jsessionid 5 String id=session.getId(); 6 //创建cookie对象替代jsessionid 7 Cookie cookie=new Cookie("JSESSIONID", id); 8 cookie.setPath("/WEB05"); 9 cookie.setMaxAge(120); 10 response.addCookie(cookie); 11 response.getWriter().write(id);
Cookie 和 Session 的区别
cookie 数据存放在客户端,session 数据放在服务器端。
cookie 不是很安全,别人可以分析存放在本地的cookie 并进行 cookie 欺骗 考虑到安全应当使用session。
session 会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能 考虑到减轻服务器性能方面,应当使用 cookie 。
单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie。
将登陆信息等重要信息存放为 session、其他信息如果需要保留,可以放在cookie中