- cookie和session的区别
Cookie:从客户端访问数据,在服务器创建cookie,随着响应页面返回到客户端,保存在客户端的操作系统中,(每个浏览器有自己的cookie保存地址),
Session:从客户端访问数据,在服务器创建session,保存在服务器上,然后会创建一个cookie(“JSESSIONID”,当前session对象的唯一标识id),此cookie的默认寿命是(-1),即在关闭浏览器时,失效。Cookie会随响应保存在客户的操作系统中,关闭浏览器时,cookie失效,则sessionid找不到,服务器从请求中接受不到sessionid,则会创建新的。如果不关闭浏览器,sessionid存在,客户进行增删改时,sessionid会随着cookie进入服务器,服务器找到对应的session,则会继续执行后续操作。如果直接进行增删改,sessionid不存在,则会返回到登陆页面。
二、
1、Session :识别同一个用户浏览器进程,打开新标签算,关闭浏览器,再重新打开不算。
2、创建session:HttpSession接口,服务器(Tomcat)负责实现
HttpSession session = request.getSession();
3、使用session:存储数据:session作用域,存储的是命名属性
存储:session.setAttribute(String name,Object value);
获取:session.getAttribute(String name);------>Object
- 销毁:
- 自动销毁:客户端最后一次与服务器交互之后的30分钟,服务器自动销毁session。在服务器(tomcat)中的tomcat---->conf---->web.xml 标签<session-timeout>中规定。可以在此处修改,更优的是,在自己的项目中的配置文件中添加
<session-config>
<session-timeout>10</session-timeout>
</session-config> - 手工销毁:
Session.invalidate();
功能(安全退出/注销)
- 如果用户禁用cookie(意为在服务器中创建的cookie传输不到客户端),仍然能找到对应的session,解决办法:客户端是没有办法再添加上的,在传输的过程中要把sessionid加上,在原有的路径上,拼接session的id,方法:response.encodeURL(“url”);
所有有此方法的页面都需要用servlet代码来实现。