Cookie
简介
是某些网站为了辨别用户身份,进行session跟踪而储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息。HTTP协议本身是无状态的。Cookie实际上是一小段的文本信息。客户端向服务器发起请求,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务器。服务器检查该Cookie,以此来辨认用户状态。
基本组成
Name/Value:设置Cookie的名称及相对应的值,对于认证Cookie,Value值包括Web服务器所提供的访问令牌。
Expires:用来设置Cookie的生存期。包括会话性与持久性两种存储类型。默认为会话性Cookie,仅保存在客户端内存中,并在用户关闭浏览器时失效;持久性Cookie会保存在用户的硬盘中,直至生存期到或用户直接在网页中单击“注销”等按钮结束会话时才会失效。
Path:定义了Web站点上可以访问该Cookie的目录。
Domain:指定了可以访问该 Cookie 的 Web 站点或域。允许子域设置或获取父域的Cookie,当需要实现单点登录方案时,Cookie 的上述特性非常有用,同时也增加了 Cookie受攻击的危险。
Secure:指定是否使用HTTPS安全协议发送Cookie。保护Cookie在浏览器与服务器之间传输的时候不被窃取和篡改。
HTTPOnly:用于防止客户端脚本通过document.cookie属性访问Cookie,有助于保护Cookie不被跨站脚本攻击窃取或篡改。
?一些细节问题
?一个Cookie只能保存一个信息;
?一个web站点可以给浏览器发送多个cookie,最多存放20个cookie;
?Cookie大小有限制4kb;
?浏览器的上线为300个cookie。
?一些操作
URLEncoder.encode("这是一个示例!","utf-8")
URLDecoder.decode(cookie.getValue(),"UTF-8")
Cookie[] cookies = req.getCookies(); //获得Cookie
cookie.getName(); //获得cookie中的key
cookie.getValue(); //获得cookie中的vlaue
new Cookie("lastLoginTime", System.currentTimeMillis()+""); //新建一个cookie
cookie.setMaxAge(24*60*60); //设置cookie的有效期
resp.addCookie(cookie); //响应给客户端一个cookie
Session
简介
在计算机中,尤其是在网络应用中,称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将终止该会话。Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在Session对象中。
一些操作
//得到Session
HttpSession session = req.getSession();
Person person = (Person) session.getAttribute("name");
System.out.println(person.toString());
HttpSession session = req.getSession();
session.removeAttribute("name");
//手动注销Session
session.invalidate();
web.xml配置(可设置失效时间)
<!--设置Session默认的失效时间-->
<session-config>
<!--xx分钟后Session自动失效,以分钟为单位-->
<session-timeout>xx</session-timeout>
</session-config>
|