1.Cookie API
获取客户端的Cookie信息:
Cookie[] cookies = req.getCookies();
服务器给客户端响应一个Cookie:
Cookie cookie = new Cookie("UID", "1232djsjd2389"); resp.addCookie(cookie);
服务端获取Cookie信息:(获取Cookie的键和值)
for (Cookie cookie : cookies) { System.out.println(cookie.getName()); System.out.println(cookie.getValue()); }
设置Cookie的有效期:(不设置有效期,默认关闭浏览器Cookie消失)
Cookie UID = new Cookie("UID", "1232djsjd2389"); UID.setMaxAge(24 * 60 * 60); resp.addCookie(cookie);
案例演示:
设置Cookie并输入Cookie信息:(由于是第一次访问,所以不会显示键为UID的Cookie)
Cookie UID = new Cookie("UID", "1232djsjd2389"); resp.addCookie(UID); Cookie[] cookies = req.getCookies(); for (Cookie cookie : cookies) { System.out.println(cookie.getName() + " " + cookie.getValue()); // SL_G_WPT_TO zh-CN // SL_GWPT_Show_Hide_tmp undefined // SL_wptGlobTipTmp undefined // JSESSIONID AB808B8B5283B9AA7644D459D24B3DCE }
再次访问路径,查看浏览器Cookie信息,发现了键为UID的Cookie信息:
Java - Cookie工作的原理是,服务器端其会在响应标头中添加Set-Cookie信息:
而客户端访问服务器端时,会在请求标头添加Cookie信息:
2.Session API
使用session会话跟踪技术可以解决HTTP无状态(服务器无法判断两次请求是不是同一个客户端)的问题
获取Session信息:
HttpSession session = req.getSession();
Session保存作用域:
HttpSession session = req.getSession(); session.setAttribute("name", "dahezhiquan");
获取作用域内容:
HttpSession session = req.getSession(); Object name = session.getAttribute("name");
获取SessionID:
HttpSession session = req.getSession(); String id = session.getId();
判断Session是不是新的:
HttpSession session = req.getSession(); boolean aNew = session.isNew();
注销当前Session,强制使Session失效,浏览器会立马生成一个新的Session ID:
session.invalidate();
获取session的创建时间,最近一次session的使用时间:
session.getCreationTime() --> 获取session的创建时间 session.getLastAccessedTime() --> 获取最近一次session的使用时间
设置Session的失效时间:
可以通过web.xml来设置Session的默认失效时间:(例如,设置默认Session失效时间为15分钟)
<session-config> <session-timeout>15</session-timeout> </session-config>