java EE之cookie和session

来源:互联网 发布:零基础学大数据现实吗 编辑:程序博客网 时间:2024/05/17 03:13

1.cookie

cookie可以将少量信息通过servlet发给web浏览器,并保存在浏览器端,当服务器需要时再传给服务器。cookie的值可以唯一的标志客户端,因此cookie常被用来做会话管理。用于存储会话过程中产生的数据。

当在服务器端获取cookie后,进行请求/回应时,请求/响应头会自动添加cookie/set-cookie

2.cookie的特性

name
value
path  :默认就是当前访问的这个Servlet的路径  
maxAge   如果为0就删除

3.如何使用

服务器写cookie给浏览器

Cookie cookie=new Cookie();

response.addCookie("name","value");

响应头:set-cookie:name=value

服务器得到浏览器发来的cookie

Cookie[] cookies=request.getCookies();

请求头:cookie:name=value;

4.cookie文件中数据存储的格式

  showTime  1421718610521     localhost    /day09_00_showtime/servlet/
  name             value    domain           path

能被访问的URL的特点:

      Cookie 能被访问要符合:MYURL.startWith(domain+path)完全匹配   然后再找name也匹配,此时才能访问到value

如:

http://localhost:8080/day09_00_showtime/servlet/abc/ShowTimeServletDemo5  //给
http://localhost:8080/day10_00_cookie/servlet/ShowTimeServlet  //不给
http://localhost:8080//day09_00_showtime/ShowTimeServlet    //不给
给不给服务器传cookie是由浏览器决定的,取决于domain+path+name是否匹配



session部分:

1.特点

存在服务器上,先是服务器产生一个Session对象,并在session对象中分配一个唯一的id,通过http协议响应头发送一个Set-Cookie:JSESSIONID=id号给浏览器,以后浏览器发送数据时就通过Cookie:JSESSIONID=id号

2.如何获取session

//这两种方法是一样的,先判断有没有,有直接返回,没有创建一个新的
  HttpSession session =  request.getSession();
  HttpSession session = request.getSession(true);

  HttpSession session = request.getSession(false);//
如果有就返回,没有的话返回null,

3.实现原理

 跟Cookie一样,只不过不发数据,发一个JSessionId的号码(当session创建以后会将产生的jsessionID响应给浏览器)
 如果浏览器发送的JSessionId与服务器的JSessionId一样,说明是同一个Session,数据
 此时就存在这个Session中

 Set-cookie:JSESSIONID=23354354543543   响应头
 cookie:JSESSIONID=23354354543543       请求头

Session只与浏览器有关.

4.用Session就是把它当成一个域对象来用   (就是一次会话过程)
内部维护了一个Map集合 
 setAttribute("key",Object);
 Object value = getAttribute(key);
removeAttribute(key);

存活时间:30分钟(空闲的)会销毁(Tomcat配置文件中有)
session.invalidate();//强制销毁

0 0
原创粉丝点击