Cookie与Session
Cookie的属性
Name : 该cookie的名称
Value : 该Cookie的值
Domain : 可以访问此cookie的域名,比如->www.baidu.com 这就是域名
Path : 可以访问此页面的路径,比如->www.baidu.com/demo ,这个/demo就是路径
Expires/Max-Age : 该cookie的最大存活时间,默认存活时间是随会话结束而失效
Size : 该cookie的大小
Http : httponly属性,若为true,则只有http请求可以访问该cookie,而不能通过document.cookie来访问此cookie
Secure : 设置是否只能通过https来传递此条cookie
如何使用cookie
接收cookies : 每次http请求发生时,浏览器会把符合条件的cookies通过request传入后台,可用request的getCookies方法获取cookies
新建cookie : 通过new Cookie()创建新的cookie
发送cookie到浏览器 : 通过HttpServletResponse的addCookie()方法把cookie传入到浏览器.
在后台可以通过HttpServletRequest, HttpServletResponse和Cookie类来新建,修改,操作cookie.例如为cookie设置路径等
Session
服务器可以为每个用户浏览器创建一个session对象,一个浏览器独占一个session对象(默认情况)创建后会将session的id号以cookie的形式传回给客户端,只要会话不结束,客户端的浏览器再访问服务器时,都会带着sessionId,从而找到服务器内存中对应的session.
session是jsp的内置对象之一,jsp会自动生成session对象,也可以用request的getSession(true)的方法强制新建session.
session存储在服务器端,以键值对的方式存储数据
JSP中获取session:
${sessionScope.XXXX}
Cookie与Session的对比
储存位置 : cookie储存于客户端临时存储文件夹中, session储存于服务器内存中
安全性 : cookie以明文方式存储在客户端,安全性低,可以加密后在存储, session存储在服务器中,安全性较高
网络传输 : cookie会传递消息给服务器, session不传递,因为本身就存储在服务器中
生命周期 : cookie默认会话结束就销毁, session在第一次访问服务器时创建,tomcat中默认失效时间为30分钟
访问范围 : cookie为多个浏览器共享, session为一个浏览器使用
销毁方法 : cookie可用setMaxAge()设置存活时间为0的方法, session可用invalidate()方法