//创建cookie对象
Cookie cookie = new Cookie( "key","value");
//通知客户端保存Cookie
resp.addCookie(cookie);
Cookie[] cookies = req.getCookies();
getkey()
getValue()
可以将查找Cookie的过程提取成一个Uitl方法。
public static cookie findCookie(string name , Cookie[] cookies){
if (name == null || cookies == null || cookies.length == 0) {
return null;
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())) {
return cookie;
}
}
return null;
}
// 方案一
//1、先创建一个要修改的同名的Cookie对象
//2、在构造器,同时赋于新的Cookie值。
Cookie cookie = new Cookie("key1" , "newValue1");
//3、调用response.addCookie(Cookie);通知客户端保存修改
resp.addCookie(cookie);
// 方案二
//1,先查找到需要修改的Cookie对象
Cookie cookie = CookieUtils.findCookie("key2", req.getCookies());
if(cookie != null) {
//2,调用setvalue()方法赋于新的cookie值。
cookie.setvalue( "newValue2");
//3,调用response.addcookie()通知客户端保存修改
resp.addCookie(cookie);
}
在创建cookie之后将新值分配给cookie。如果使用二进制值,则可能需要使用BASE64编码。
setMaxAge() //设置最大生命周期
//正数:指定秒数之后删除
//负数:浏览器关闭之后删除
// 0 :马上删除
Cookie的 path属性可以有效的过滤哪些Cookie可以发送给服务器。哪些不发。
path属性是通过请求的地址来进行有效的过滤。
CookieA path-/工程路径
CookieB path=/工程路径/abc
http://ip;port/工程路径/a.html
CookieA发送
CookieB不发送
http://ip:port/工程路径/abc/a.html
CookieA发送
CookieB发送
// 创建和获取session。它们的API是一样的。
HttpSession session = request.getSession();
//第一次调用是:创建session会话
//之后调用都是:获取前面创建好的session会话对象。
isNew(); //判断到底是不是刚创建出来的(新的)
//true表示刚创建
//false表示获取之前创建
//每个会话都有一个身份证号。也就是ID值。而且这个ID是唯一的。
getld(); //得到session的会话id值。
getAttribute()
setAttribute()
setMaxInactiveInterval(int) //秒为单位
//负数,永不超时
getMaxInactiveInterval(int)
invalidate() //使当前session会话马上超时无效
Session默认的超时时长为30分钟。
因为在Tomcat服务器的配置文件web.xml中默认有以下的配置,它就表示配置了当前Tomcat服务器下所有的session超时配置默认时长为:30分钟。
<session-config>
<session-timeout>30</session-timeout>
</session-config>
Session超时指的是客户端两次请求的最大间隔时长。
原文:https://www.cnblogs.com/nojacky/p/13906168.html