概念
快速入门
使用步骤
1、创建Cookie对象,绑定数据
2、发送Cookie对象
3、获取Cookie,拿到数据
package com.example.javawebs.cookiedemo;import javax.servlet.*;import javax.servlet.http.*;import javax.servlet.annotation.*;import java.io.IOException;@WebServlet("/cookieServlet1")public class cookieServlet1 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建cookie对象Cookie c = new Cookie("msg", "hello");//设置cookie存活时间 将cookie持久化到硬盘 30秒 还有更多属性可以设置c.setMaxAge(30);//发送cookieresponse.addCookie(c);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}}
package com.example.javawebs.cookiedemo;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/cookieServlet2")public class cookieServlet2 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//获取cookieCookie[] cs = request.getCookies();//获取数据,遍历cookieif (cs != null){for (Cookie c : cs) {String name = c.getName();String value = c.getValue();System.out.println(name+":"+value);}}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}}

多个Cookie
package com.example.javawebs.cookiedemo;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/cookieServlet3")public class cookieServlet3 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//创建cookie对象Cookie c1 = new Cookie("msg", "hello");Cookie c2 = new Cookie("name", "lww");Cookie c3 = new Cookie("high", "180");//发送cookieresponse.addCookie(c1);response.addCookie(c2);response.addCookie(c3);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}}
Cookie 上次登录时间demo
package com.example.javawebs.cookiedemo;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.net.URLDecoder;import java.net.URLEncoder;import java.text.SimpleDateFormat;import java.util.Date;@WebServlet("/cookieServlet4")public class cookieServlet4 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");Cookie[] cookies = request.getCookies();boolean flag = false; //没有cookie为lastTimeif (cookies != null && cookies.length >0){for (Cookie cookie : cookies) {String name = cookie.getName();if ("lastTime".equals(name)){String value = cookie.getValue();value = URLDecoder.decode(value,"utf-8");response.getWriter().write("欢迎回来,上次访问时间为:"+value);flag = true;//美国时间,需要转为中国时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);str_date = URLEncoder.encode(str_date, "utf-8");cookie.setValue(str_date);cookie.setMaxAge(60*60*24*30);response.addCookie(cookie);break;}}}if (cookies==null || cookies.length==0 || flag==false){//美国时间,需要转为中国时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);str_date = URLEncoder.encode(str_date, "utf-8");Cookie cookie = new Cookie("lastTime", str_date);cookie.setMaxAge(60*60*24*30);response.addCookie(cookie);response.getWriter().write("欢迎首次登录");}}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {this.doGet(request,response);}}
JSP 完成上面demo
<%@ page import="java.util.Date" %><%@ page import="java.text.SimpleDateFormat" %><%@ page import="java.net.URLEncoder" %><%@ page import="java.net.URLDecoder" %><%--Created by IntelliJ IDEA.User: 77239Date: 2022/1/3Time: 23:34To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><%Cookie[] cookies = request.getCookies();boolean flag = false; //没有cookie为lastTimeif (cookies != null && cookies.length >0){for (Cookie cookie : cookies) {String name = cookie.getName();if ("lastTime".equals(name)){flag = true;String value = cookie.getValue();value = URLDecoder.decode(value,"utf-8");//这里需要导入jsp api包,才可以使用out.write()response.getWriter().write("欢迎回来,上次访问时间为:"+value);//美国时间,需要转为中国时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);str_date = URLEncoder.encode(str_date, "utf-8");cookie.setValue(str_date);cookie.setMaxAge(60*60*24*30);response.addCookie(cookie);break;}}}if (cookies==null || cookies.length==0 || flag==false){//美国时间,需要转为中国时间Date date = new Date();SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");String str_date = sdf.format(date);str_date = URLEncoder.encode(str_date, "utf-8");Cookie cookie = new Cookie("lastTime", str_date);cookie.setMaxAge(60*60*24*30);response.addCookie(cookie);response.getWriter().write("欢迎首次登录");}%></body></html>
