@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); } }