Cookie
Cookie技术是将用户的数据存储到客户端的技术
apis
methods | desc |
---|---|
Cookie(String cookieName,String cookieValue) | 构造方法 |
setMaxAge(int seconds) | 设置客户端持久化时间(单位:s) |
setPath(String path) | 设置Cookie的携带路径 |
response.addCookie(Cookie cookie) | 向客户端发送cookie |
request.getCookies() | 获取所有Cookie |
1、服务器端向客户端发送一个Cookie
1) 创建Cookie
Cookie cookie = new Cookie("username", "zhangsan");
【注意】Cookie中不能存储中文
2) 设置Cookie在客户端的持久化时间:
cookie.setMaxAge(6000);
【注意】如果不设置持久化时间,cookie会存储在浏览器的内存中,浏览器关闭 cookie信息销毁(会话级别的cookie),如果设置持久化时间,cookie信息会 被持久化到浏览器的磁盘文件里
3) 设置Cookie的携带路径::
cookie.setPath("/ReviewProject");
【注意】如果不设置携带路径,那么该cookie信息会在访问产生该cookie的 web资源所在的路径都携带cookie信息
4) 向客户端发送cookie:
response.addCookie(cookie);
5) 删除客户端的cookie::
cookie.setMaxAge(0);
【注意】如果想删除客户端的已经存储的cookie信息,那么就使用同名同路径的持久化时 间为0的cookie进行覆盖即可
6) 客户端效果图
7) 图例(使用场景)
2、服务器端怎么接受客户端携带的Cookie
通过request获得所有的Cookie
Cookie[] cookies = request.getCookies();
for (Cookie mCookie : cookies) {
if (mCookie.getName().equals("username")) {
String cookieValue = mCookie.getValue();
System.out.println("cookieValue" + cookieValue);
}
}
Session
Session技术是将数据存储在服务器端的技术,会为每个客户端都创建一块内存空间 存储客户的数据,但客户端需要每次都携带一个标识ID去服务器中寻找属于自己的内 存空间。所以说Session的实现是基于Cookie,Session需要借助于Cookie存储客 户的唯一性标识JSESSIONID
apis
methods | desc |
---|---|
request.getSession() | 获得Session对象 |
setAttribute(String name,Object obj) | 存数据 |
getAttribute(String name) | 取数据 |
removeAttribute(String name) | 删除数据 |
1) 获得属于本客户端的session对象
HttpSession session = request.getSession();
【注意】此方法会获得专属于当前会话的Session对象,如果服务器端没有该会话的Session 对象会创建一个新的Session返回,如果已经有了属于该会话的Session直接将已有 的Session返回(实质就是根据JSESSIONID判断该客户端是否在服务器上已经存在 session了)
2) 怎样向session中存取数据(session也是一个域对象)
session.setAttribute(String name,Object obj);
session.getAttribute(String name);
session.removeAttribute(String name);
3) Session对象的生命周期
创建:
第一次执行request.getSession()时创建
销毁:
1)服务器(非正常)关闭时
2)session过期/失效(默认30分钟)
在工程的web.xml中进行配置
<session-config>
<session-timeout>30</session-timeout>
</session-config>
3)手动销毁session
session.invalidate();
作用范围:
默认在一次会话中,也就是说在,一次会话中任何资源公用一个session对象