Session、Cookie2
Cookie
Cookie 是服务端在 HTTP 响应中附带传给浏览器的⼀个⼩⽂本⽂件,⼀旦浏览器保存了某个 Cookie, 在之后的请求和响应过程中,会将此 Cookie 来回传递,这样就可以通过 Cookie 这个载体完成客户端 和服务端的数据交互。
1.Cookie常见操作
创建cookie
//创建一个Cookie
Cookie cookie=new Cookie("name","zhangsan");
response.addCookie(cookie);
读取cookie
//读取Cookie
//读取Cookie 只有这一个方法 拿出来是一个Cookie数组
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
//输出cookie的name
out.write(cookie.getName());
out.write("=");
out.write(cookie.getValue());
out.write("<br/>");
//write 只能输出String类型 调用toString 转成String类型。
out.write(cookie.toString());
out.write("<br/>");
}
2.Cookie的常用方法
void setMaxAge(int age) 设置 Cookie 的有效时间,单位为秒
int getMaxAge() 获取 Cookie 的有效时间
String getName() 获取 Cookie 的 name
String getValue() 获取 Cookie 的 value
Session和Cookie的区别
session:保存在服务器 保存的数据是 Object 会随着会话的结束⽽销毁 保存重要信息
cookie:保存在浏览器 保存的数据是 String 可以⻓期保存在浏览器中,⽆会话⽆关 保存不重要信息
存储⽤户信息:
- session:setAttribute("name","admin") 存 getAttribute("name") 取
⽣命周期:服务端:只要 WEB 应⽤重启就销毁,客户端:只要浏览器关闭就销毁。 退出登录 :session.invalidate()
2.cookie:response.addCookie(new Cookie(name,"admin")) 存
//取
Cookie[] cookies=request.getCookies();
for(Cookie cookie:cookies){
//输出cookie的name
out.write(cookie.getName());
out.write("=");
out.write(cookie.getValue());
out.write("<br/>");
⽣命周期:不随服务端的重启⽽销毁,客户端:默认是只要关闭浏览器就销毁,我们通过 setMaxAge() ⽅法设置有效期,⼀旦设置了有效期,则不随浏览器的关闭⽽销毁,⽽是由设置的时间来决定。
退出登录:setMaxAge(0)