Cookie与Session

  • HTTP协议是无连接无状态协议
  • 服务器可以向客户端写内容
  • Cookie只能是文本内容
  • 客户端可以阻止写Cookie
  • Cookie分为两类,一是属于窗口子窗口的,存在内存中。二是基于文本的,放在cookie的文件中。
  • Cookie跨域访问。
  • 父路径设置的Cookie,子路径可以访问读取。子路径设置的Cookie,父路径不能读取到。路径是URL,不是真实文件路径。

写Cookie:

Cookie cookie=new Cookie(“cookiename”,”CookieValue”);

response.addCookie(cookie);

cookie.setMaxAge(3600);

读Cookie:

Cookie[] cookies=request.getCookies();

Cookie cook=cookies[0];

cook.get

Session

Cookie是将信息保存到客户端,只能存字符串,大小为4k.有过期时间,可以设置过期时间。

Session是将信息存在服务器端。可以存任意类型,大小没有限制,也可以设置过期时间。

保存Seesion:

HttpSession session=request.getSeesion(true);//true找不到则创建一个

HttpSession是一个接口。

session.getId();

session.getAttribute(“name”);

session.setAttribute(“name”,value);

session.getCreationTime();

session.getLastAccessedTime();

有父子关系的浏览器窗口中可以去到Session的值。

建立session的时候会像客户端传一个cookie,存的是sessionID的值。

request.getRequestedSessionID() 获取从客户端带过来的sessionID值。

request.isRequestedFromCookie() sessionID是否是从cookie中获取的。

request.getRequestURL().tostring() 获取请求的URL地址。

response.encodeURL(request.getRequestURL()):URL重写,解决客户端禁止了Cookie导致Session无用的问题。维护客户端与服务器之间的会话状态。

Session总结:

1.是服务器的一块内存。(key-value)

2.和客户端窗口(及子窗口)对应。

3.有过期时间。客户端和服务器有对应的SessionID.

4.维护客户端与服务器端对应,防止禁用Cookie导致的问题:内存Cookie,URL重写。

原文地址:https://www.cnblogs.com/guaniu/p/2318625.html