黑马程序员技术交流社区

标题: 【上海校区】Cookie & Session [打印本页]

作者: 偷树的光头强    时间: 2018-10-25 11:12
标题: 【上海校区】Cookie & Session
一:Cookie1)Cookie的实现原理






2)Cookie基本API


方法
使用示例
说明

创建Cookie(String name,String value)Cookie c1 = new Cookie("name","tom")
获取name值String  getName()c1.getName()
获取value值String getValue()c1.getValue()
发送cookievoid  addCookie(Cookie cookie)response.addCookie(c1)
设置cookie的值void  setValue(String value)c1.setValue("李四")
获取所有cookieCookie[]  getCookies()rquest.getCookies()
3)Cookie的存活时间



浏览器会话结束
设值最大存活时间:
void setMaxAge(int  seconds)
示例:userNameCookie.setMaxAge(60*60);
说明:设置Cookie的有效时间: 如果没有设置,cookie只会保存在浏览器的缓存中,浏览器关闭后cookie立即被删除。
如果设置有效时间,在时间范围内,cookie被写入到浏览器端,关闭浏览器下次访问仍可活的,直到过期。


4)删除Cookie的几种方法
       1.没有设置最大存活时间的cookie,浏览器关闭后cookie立即消失;
       2.使用浏览器手动清除cookie;
       3.浏览器禁用cookie;
       4.通过Servlet技术将cookie删除;
5)Cookie分类
       1.会话级别:没有设置最大存活时间的cookie,浏览器关闭后消失;
       2.持久级别:设置了最大存活时间,浏览器关闭后不会消失;
Cookie的有效路径:
       setPath(String path):设置cookie的有效路径,在这个路径及其子路径下有效;


二:Session
1)获取Session的API
       1.request.getSession()   创建session 如果session不存在,创建session,存在,获取当前session
       2.HttpSession session1 = request.getSession(true);   
         创建session 如果session不存在,创建session,存在,获取当前session
       3.request.getSession(false);   如果当前存在session 获取当前session, 不存在,不不获取session


2)Session的API


方法
使用示例
说明

void setAttribute(String name,Object value)session.setAttribute("loginUser",user)将一个对象与一个名称关联<br />之后存储到session中
Object getAttribute( String name)session.getAttribute("loginUser")通过名称获取session<br />中的数据
void removeAttribute(String name)session.removeAttribute("loginUser")根据指定名称删除<br />session中的数据
String sessionId = session.getId();session.getId()获取session的id
request.getSession();request.getSession();获取当前session
request.getSession(true);(了解)request.getSession(true);获取当前session
request.getSession(false);(了解)request.getSession(false);获取当前session,如果不存在就session为空
invalidate()ression.invalidate()使当前session失效
3)Session的生命周期






4)Session的持久化方案
        1. 在Servlet中手动创建JESSIONID;         2. 手动设置JESSIONID的存活时间;         3. 将JESSIONID相应给浏览器;
实现原理:



5)Session的作用域
       1.ServletContext域
             一个WEB应用(项目)对应一个ServletContext,这个对象中保存的数据正在整个WEB项目中都有效;
                创建:服务器启动的时候;
                销毁:服务器关闭或项目移除后;
       2.HttpServletRequest
            一次请求创建一个request。这个对象中保存的数据,一次请求(请求链)内数据有效;
                创建:客户端向服务器发送一次请求;
                销毁:服务器为这次请求做出响应之后,销毁request;
       3.操作作用域的API
                 存储数据:setAttribute(name,value);
                 获得数据:getAttribute(name);
                 删除数据:removeAttribute(name);


作者: 魔都黑马少年梦    时间: 2018-10-25 14:39

作者: 不二晨    时间: 2018-10-31 14:26

作者: 魔都黑马少年梦    时间: 2018-11-1 16:11





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2