Cookie和Session
一.Cookie 参考博文
工作流程:
1. servlet创建cookie,保存少量数据,发送浏览器。
2. 浏览器获得服务器发送的cookie数据,将自动的保存到浏览器端。
3. 下次访问时,浏览器将自动携带cookie数据发送给服务器。
cookie操作:
1.创建cookie:new Cookie(name,value)
2.发送cookie到浏览器:HttpServletResponse.addCookie(Cookie)
3.servlet接收cookie:HttpServletRequest.getCookies() 浏览器发送的所有cookie
cookie特点:
1. 每一个cookie文件大小:4kb , 如果超过4kb浏览器不识别
2. 一个web站点(web项目):发送20个
3.一个浏览器保存总大小:300个
4.cookie 不安全,可能泄露用户信息。浏览器支持禁用cookie操作。
5. 默认情况生命周期:与浏览器会话一样,当浏览器关闭时cookie销毁的。
5.1,cookie.getName() 获得名称,cookie中的key
5.2,cookie.getValue() 获得值,cookie中的value
5.3,cookie.setValue(java.lang.String newValue) 设置内容,用于修改key对应的value值。
5.4,cookie.setMaxAge(int expiry) 设置有效时间
5.4.1,maxAge >0 表示cookie存活多少秒,到时间浏览器删除该cookie
5.4.2,maxAge <0 无论设置成多少,都表示活到浏览器关闭,默认值是-1
5.4.3,maxAge =0 告诉浏览器立即删除这个cookie
5.5,cookie.setPath(java.lang.String uri);表明我们网站的哪个页面可以访问cookie
二.session
1.原理:首先浏览器请求服务器访问web站点时,程序需要为客户端的请求创建一个session的时候,服务器首先会检查这个客户端请求是否已经包含了一个session标识、称为SESSIONID,如果已经包含了一个sessionid则说明以前已经为此客户端创建过session,服务器就按照sessionid把这个session检索出来使用,如果客户端请求不包含session id,则服务器为此客户端创建一个session并且生成一个与此session相关联的jsessionid
2.获取session:
HttpSession session = new request.getSession();//如果没有将创建一个新的,等效getSession(true);
3.session属性操作:
session.setAttrubute(key,value);//存值
session.getAttribute(key);取值
session.invalidate()将session对象销毁,注销功能
session.setMaxInactiveInterval(int interval) 设置有效时间,单位秒
在web.xml中配置session的有效时间:
<session-config>
<session-timeout>30</session-timeout> 单位:分钟
<cookie-config>
<max-age>3600</max-age> //只能控制JSESSIONID的生命周期
</cookie-config>
<session-config>