Cookie是客户端技术,程序把每个用户需要保存的数据以cookie的形式保存到用户各自的浏览器中,当用户使用浏览器再去访问服务器中的web资源时,就会网址携带着数据去服务器端。
Session是服务器端技术,服务器在运行时可以为每一位用户的数据创建一个其独享的Session对象,由于Session为用户浏览器独享,所以当用户在访问服务器的web资源时,可以把各自的数据放在各自的Session中,当用户再去访问服务器中的其他的web资源的时候,其他的web资源再从用户各自的Session中取出数据为用户服务。
session和cookie的区别:
cookie | session | |
数据保存 | 客户端 | 服务端 |
数据类型 | string | object |
保存数据时长 | 可长久保存(可以设置时长) | 随此次会话结束而结束 |
安全性 | 不安全 | 安全 |
cookie的常用方法:
Cookie cookie = new Cookie("account", account);//创建一个cookie,保存账号数据
//cookie存在在本地的有效时长(单位为秒) 默认为-1 表示页面关闭cookie就失效
cookie.setMaxAge(1*60*60*24); //设置时长为一天
cookie.setDomain(""); //设置在某个域名下生效
cookie.setPath(""); //设置访问该域名下某个路径时生效
response.addCookie(cookie); //添加到response返回给客户端浏览器,把数据存到客户端中
Cookie[] cookies=request.getCookies(); //返回客户端在此次请求中发送的所有cookie对象
session的常用方法:
HttpSession session = request.getSession(); //获取session,没有则创建
String sessionIdS= session.getId(); //获取sessionid
session.setMaxInactiveInterval(1*24*60*60); //设定session的非活动时间(以秒为单位)
//获取session的有效非活动时间(以秒为单位)
int maxInactiveInterval = session.getMaxInactiveInterval();
session.invalidate(); //设置session对象失效
session.setAttribute(String key, Object value) //以key/value的形式保存对象值
session.getAttribute(String key) //通过key获取对象值
removeAttribute(String key); //从session中删除指定名称(key)所对应的对象
cookie和session安全性比较:
cookie的数据保存到客户端浏览器中,是以键值对存在的;(以明文形式存在不安全)
session是存到服务器端的(安全)