Cookie
Cookie 是存储在客户机的文本文件,它们保存了大量轨迹信息。
HTTP cookie流程:
- 服务器脚本发送一系列 cookie 至浏览器。比如名字,ID 等等用户信息。
- 浏览器在本地机中存储这些信息。
- 当下一次浏览器发送任何请求至服务器时,它会同时将这些 cookie 信息发送给服务器,然后服务器使用这些信息来识别用户等。
创建Cookie步骤:
- 创建一个Cookie对象:
Cookie cookie = new Cookie("cookie_username",name);
- 设置有效时间(单位为秒):
cookie.setMaxAge(30); //设置有效时间,单位秒,默认-1,即关闭浏览器失效。
- 将cookie发送至HTTP响应头中:
resp.addCookie(cookie);
- 获取cookie信息:
Cookie[] cookies = req.getCookies();
for (int i = 0; i < cookies.length; i++){
Cookie cookie = cookies[i];
System.out.println("AdminHomeServlet cookie:"
+cookie.getName()+",value="+cookie.getValue()
+",maxage="+cookie.getMaxAge());
}
比如:在AdminLoginServlet登录时把用户信息保存在一个cookie中,然后AdminHomeServlet获得。
Session:
保存用户信息到session中:
HttpSession session = req.getSession();
session.setMaxInactiveInterval(30);//设置有效时间,单位秒,默认30分钟
session.setAttribute("username",name);
获取Session中的信息:
String username = (String)req.getSession().getAttribute("username");
从session中移除某个属性:
req.getSession().removeAttribute("username");
清除session:
req.getSession().invalidate();//将session无效化
session和cookie的最大区别:
session信息保存在服务器
cookie信息保存在客户端
所以,session比较安全,cookie不安全。但是session会占用服务器资源,影响服务器性能。