@WebServlet("/CookieDemo01")
public class CookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("来了一个请求~");
//1. 创建cookie cookie的name和value一般不写中文,value的值不要有空格,否则会报错!
Cookie cookie = new Cookie("address", "shenzhen");
Cookie cookie2 = new Cookie("phone","10086");
//2. 给响应设置cookie:把cookie传递给浏览器
// 设置好cookie之后,实际上返回给浏览器会放到响应头里面去,
// 如下所示:
// Set-Cookie: address=shenzhen
//如果设置了多个cookie,那么响应头里面显示的效果是这样的:
//Set-Cookie: address=shenzhen
//Set-Cookie: phone=10086
resp.addCookie(cookie);
resp.addCookie(cookie2);
}
}
@WebServlet("/CookieDemo02")
public class CookieDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("来了一个请求。。。");
//得到浏览器带过来的所有的cookie,是一个cookie[]
//req.getCookies()
//1. 获取所有的cookie
// 如果浏览器有带过来cookie 那么这个方法能够获取到cookie
// 如果浏览器没有带过来cookie ,那么这个方法会返回null ,所以后续的操作要进行判空操作。
Cookie[] cookies = req.getCookies();
//cookie是在请求头里面的,: Cookie:address=10086;phone=110
if(cookies != null){
//2. 遍历数组 遍历得到每一个cookie,然后获取cookie的name 和 value
// 因为cookie是键值对的形式,形如: address=shenzhen
for(Cookie c : cookies){
//Cookie: address=10086
System.out.println(c.getName() + "=" + c.getValue());
}
}
}
}
Cookie本质是请求头,响应头
/*
* @描述: cookie的工具类
* 根据cookie的名字,获取指定的cookie对象。
* 1. 定义一个方法,静态方法(一般是静态方法)
* 2. 有两个参数: 想获取什么cookie的名字, 整个cookie的数组
* 3. 方法要返回一个cookie对象,也即是根据名字找到的那个cookie(键值对)的对象
*/
public class CookieUtil {
/**
* 从整个所有的cookie数组里面,获取指定的cookie
* @param name 如:address
* @param cookies 如: address=shenzhen;phone=10086
* @return
*/
public static Cookie getCookie(String name , Cookie [] cookies){
if(cookies != null){
//遍历每一个cookie
for(Cookie c : cookies){
//根据每一个cookie的名字来判断是不是我们想要得到的那个cookie.
if(c.getName() .equals(name)){
return c;
}
}
}
//如果cookies 数组是空,那么就返回null, 表示找不到cookie
return null;
}
}
/*
* @描述: 根据工具类来获取cookie
*/
@WebServlet("/CookieDemo03")
public class CookieDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1. 获取所有的cookies
Cookie[] cookies = req.getCookies();
//2. 使用工具类 得到指定的cookie对象
Cookie cookie = CookieUtil.getCookie("address", cookies);
//3. 即可打印值
System.out.println(cookie.getName() + "=" + cookie.getValue());
}
}
/*
* @描述: cookie的分类:
* 临时性cookie
* a. 关闭浏览器之后,就消失了。
* b. 默认的写法就是临时性的cookie
*
* 持久性 cookie
* cookie2.setMaxAge(60 * 60 * 24 * 7); //单位是秒 ,这里设置成7天
*/
@WebServlet("/CookieDemo04")
public class CookieDemo04 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("CookieDemo04::来了一个请求~~");
//==========================下面的cookie是临时性的cookie==============================
//1. 创建cookie
Cookie cookie = new Cookie("username","admin");
//2. 返回cookie
resp.addCookie(cookie);
//==========================下面的cookie是持久性的cookie==============================
//3. 创建cookie
Cookie cookie2 = new Cookie("password" , "123456");
//4. 把cookie设置成持久性的cookie
cookie2.setMaxAge(60 * 60 * 24 * 7); //单位是秒 ,这里设置成7天
//5. 把持久性的cookie返回给浏览器
resp.addCookie(cookie2);
}
}
原文:https://www.cnblogs.com/demowei/p/14922125.html