Session
session是servlet的一个域对象,表示一个会话,当结束当前会话(关闭浏览器)则session就失效了。
当服务端request.getSession()时如果没有Session则会生成一个session和session的唯一id(JsessionID),将这个id保存到Cookie中写到用户浏览器的。
当用户再次访问服务端时,会携带这cookie中的这个JSESSIONID然后服务端会根据这个id去查找内存中的session。匹配成功就可以使用session服务。
session的唯一id可以使用 request.getSession().getId()获取。
服务器会将长时间没有活动的session从服务器中清除,Tomcat中session的默认过期时间是30分钟。
Tomcat 7以上的版本中默认禁止客户端脚本读取session Id,需要在context.xml中设置useHttpOnly=”false”,开启权限。
session保存数据
HttpSession session = request.getSession();
session.setAttribute(key,value);//设置值
session.getAttribute(key);//获取值
session.removeAttribute(key);//删除session中的某个值
session.setMaxInactiveInterval(secone) //设置session的过期时间,单位秒
session.invaldate();//销毁session
session的生命周期
session的创建,当服务端第一次调用getSession时创建session
session的销毁,session默认30分钟不用就会自动销毁,也可以手动销毁invaldate()方法销毁session。
Cookie
cookie由服务器创建,并且通过httpServletResponse发送到客户端。
cookie存储键值对,相同的path(路径)、domain(域名)、key只能添加一次,重复添加会替换
cookie会以文件的形式持久化的保存到客户端本地。每次请求都会携带上cookie。
cookie的工作原理
Cookie是基于set-cookie响应头和Cookie请求头工作的
Cookie保存数据
Cookie cookie = new Cookie
httpServletResponse.addCookie(cookie);//添加cookie
Cookie[] cookie = httpServletResponse.getCookies();//得到所有的cookie
cookie的方法 | 详情 |
Cookie(key,value) | 构造器 |
setValue()/getValue() | 保存数据和设置数据 |
setMaxAge()/getMaxAge() | 设置和得到失效时间,没有设置则cookie是一个会话级别的,在设置一个相同key的cookie过期时间设置为0则可以删除cookie |
setPath()/getPath() | 设置访问那个路径时携带cookie默认是创建cookie的servlet的所在的路径 |
setDomain()/getDomain() | 设置访问那个域名时携带cookie |
setName() | 设置cookie的名字 |