简介
- Cookie是服务器通知客户端保存键值对的一种技术。
- 客户端有了 Cookie 后,每次请求都发送给服务器。
- 每个Cookie的大小不能超过4kb
创建Cookie
protected void createCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.创建cookie对象
Cookie cookie = new Cookie("key", "value");
//2.通知客户端保存
response.addCookie(cookie);
//乱码
response.setContentType("text/html; charset=utf-8");
response.getWriter().println("Cookie 创建成功!");
}
获取Cookie
protected void getCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//得到所有的cookie
Cookie[] cookies = request.getCookies();
//遍历
for (Cookie cookie:cookies
) {
response.getWriter().println( "Cookie[name=" + cookie.getName() +",value=" + cookie.getValue() + "]");
}
//查找指定name的cookie
Cookie iWantCookie = null;
for(Cookie cookie : cookies){
if("key".equals(cookie.getName())){
iWantCookie = cookie;
break;
}
}
if(iWantCookie != null)
response.getWriter().write("找到name为key的cookie!");
}
修改Cookie值
protected void updateCookie(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
/*方式一*/
// //1.创建一个新的和原cookie 的key 一样的cookie
// Cookie cookie = new Cookie("key", "newValue");
// //2.通知客户端保存修改
// response.addCookie(cookie);
/*方式二*/
//1.查找cookie
Cookie findCookie = CookieUtils.getCookie("key", request.getCookies());
if(findCookie != null){
findCookie.setValue("newValue");
response.addCookie(findCookie);
}
response.getWriter().write("name为key的cookie已经修改!");
}
Cookie 存活控制
Cookie的生命控制指的是如何管理Cookie什么时候被销毁(删除)
setMaxage()
- 正数,表示在指定的秒数后过期
- 负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
- 零,表示马上删除Cookie
protected void defaultLife(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = new Cookie("defaultCookie", "value");
// 负数,表示浏览器一关,Cookie就会被删除(默认值是-1)
cookie.setMaxAge(-1);
response.addCookie(cookie);
}
protected void deleteNow(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//找到要删除的cookie
Cookie cookie = CookieUtils.getCookie("key", request.getCookies());
if (cookie != null) {
// 零,表示马上删除Cookie
cookie.setMaxAge(0);
response.addCookie(cookie);
response.getWriter().write("name为key的cookie已被删除!");
}
}
protected void life(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie cookie = new Cookie("life3600s", "value");
cookie.setMaxAge(60 * 60);
response.addCookie(cookie);
response.getWriter().write("创建了一个存活一小时的Cookie");
}