Cookie
什么是Cookie
1.Cookie是服务器通知客户端保持键值对的一种技术
2.客户端有了Cookie后,每次请求都发送给服务器
3.每个Cookie的大小不能超过4kb
cookie的创建
public void createCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建cookie
Cookie cookie1 = new Cookie("key1", "value1");
Cookie cookie2 = new Cookie("key2", "value2");
//客户端保存cookie
resp.addCookie(cookie1);
resp.addCookie(cookie2);
resp.getWriter().write("Cookie创建成功");
}
cookie的获取
public void getCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//得到cookie
Cookie[] cookies = req.getCookies();
//遍历cookie
for (Cookie cookie : cookies) {
resp.getWriter().write("得到cookie");
resp.getWriter().write(cookie.getName()+cookie.getValue());
resp.getWriter().write("得到cookie");
}
//得到特定cookie
Cookie cookie = cookieUtils.findCookie(req.getCookies(), "key1");
if (cookie!=null){
resp.getWriter().write("得到特定cookie");
resp.getWriter().write(cookie.getName());
resp.getWriter().write("得到特定cookie");
}
}
cookie的修改
public void updateCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建cookie 覆盖
Cookie cookie = new Cookie("key1", "value3");
//客户端保存cookie
resp.addCookie(cookie);
resp.getWriter().write(cookie.getValue());
Cookie cookie1 = cookieUtils.findCookie(req.getCookies(), "key2");
if (cookie1!=null){
cookie1.setValue("value4");
resp.addCookie(cookie1);
resp.getWriter().write(cookie1.getValue());
}
}
寻找特定的cookie的工具栏cookieutils
public class CookieUtils {
public static Cookie findCookie(Cookie[] cookies ,String name){
if (cookies==null||name==null){
System.out.println("cookie或name为空");
return null;
}
for (Cookie cookie : cookies) {
if (name.equals(cookie.getName())){
System.out.println("找到相应的cookie");
return cookie;
}
}
System.out.println("找不到对应的cookie");
return null;
}
}
cookie的生命控制
1.cookie的生命控制指的是如何管理cookie什么时候被销毁(删除)
2.setMaxAge();//设置cookie的最大生存时间,以秒为单位
3.正值,表示特定的秒数后过期
4.负值,表示浏览器一关,cookie就会被删除(默认值是-1)
5.零,表示马上删除cookie
public void lifeCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建cookie
Cookie cookie = new Cookie("key5", "value5");
//客户端保存cookie
cookie.setMaxAge(-1);
resp.addCookie(cookie);
resp.getWriter().write("Cookie关闭浏览器被删除");
}
public void nowDeleteCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建cookie
Cookie cookie1 = cookieUtils.findCookie(req.getCookies(),"key1");
//客户端保存cookie
cookie1.setMaxAge(0);
resp.addCookie(cookie1);
resp.getWriter().write("Cookie马上被删除");
}
public void FiveSecondsCookie(HttpServletRequest req, HttpServletResponse resp) throws IOException {
//创建cookie
Cookie cookie1 = new Cookie("key6", "value6");
cookie1.setMaxAge(5);
//客户端保存cookie
resp.addCookie(cookie1);
resp.getWriter().write("Cookie 5秒后被删除");
}
jsp页面
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<base href="http://localhost:8080/cookie_war_exploded/">
<head>
<meta http-equiv="pragma" content="no-cache"/>
<meta http-equiv="cache-control" content="no-cache"/>
<meta http-equiv="Expires" content="0"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cookie</title>
<style type="text/css">
ul li {
list-style: none;
}
</style>
</head>
<body>
<iframe name="target" width="500" height="500" style="float: left;"></iframe>
<div style="float: left;">
<ul>
<li><a href="cookieServlet?action=createCookie" target="target">Cookie的创建</a></li>
<li><a href="cookieServlet?action=getCookie" target="target">Cookie的获取</a></li>
<li><a href="cookieServlet?action=updateCookie" target="target">Cookie值的修改</a></li>
<li>Cookie的存活周期</li>
<li>
<ul>
<li><a href="cookieServlet?action=lifeCookie" target="target">Cookie的默认存活时间(会话)</a></li>
<li><a href="cookieServlet?action=nowDeleteCookie" target="target">Cookie立即删除</a></li>
<li><a href="cookieServlet?action=FiveSecondsCookie" target="target">Cookie存活5秒</a></li>
</ul>
</li>
<li><a href="cookieServlet?action=pathCookie" target="target">Cookie的路径设置</a></li>
</ul>
</div>
</body>
</html>