1.现有问题
2.概念
将浏览器和web服务器之间多次交互当成一个整体来处理,并且将多次交互所涉及的数据(即状态)保存先来。
3.状态管理分类
1.什么是cookie
Cookie是服务器发送到用户浏览器并保持在本地的一小块信息,他会在浏览器下次向服务器发起请求时被携带并发送到服务器上。通常,它用于告知服务端两个请求是否来自同一浏览器。

2.cookie的基本操作
@WebServlet("/cs")
public class CookieServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.服务端创建cookie对象Cookie cookie = new Cookie("username", "qcby");//2.设置cookie有效期 1 小时 cookie.setMaxAge(60*60); // 存储数据有三种方式:>0有效期,单位秒;=0浏览器关闭;<0 临时存储,默认为-1//3.将cookie响应给客户端resp.addCookie(cookie);}
}
访问:http://localhost:8080/SecondServlet/cs
查看cookie
我们可以在chrome浏览器的设置—>隐私设置和安全性中找到查看Cookie和网站数据



3.cookie的获取
浏览器jquary获取cookie
function getCookie(cname){var name = cname + "=";var ca = document.cookie.split(';');for(var i=0; ivar c = ca[i].trim();if (c.indexOf(name)==0) { return c.substring(name.length,c.length); }}return "";
}
服务器获取cookie的值
@WebServlet("/getCookie")
public class GetCookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 通过request对象获取所有的cookieCookie[] cookies = req.getCookies();// 通过for循环遍历cookieif (cookies != null) {for (Cookie cookie : cookies) {System.out.println(cookie.getName() + " " + cookie.getValue());}}}
}
4.Cookie的编码和解码
cookie默认不支持中文,只能包含ASCII码。所以cookie需要对Uncode字符进行编码,否则会出现乱码
①:创建带有中文的cookie
@WebServlet("/cs")
public class CookieServlet extends HttpServlet{@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1.服务端创建cookie对象Cookie cookie = new Cookie(URLEncoder.encode("姓名","UTF-8"),URLEncoder.encode("张三","UTF-8"));//2.设置cookie有效期 1 小时cookie.setMaxAge(60*60);//3.将cookie响应给客户端resp.addCookie(cookie);}
}
②:解码带有中文的cookie
@WebServlet("/getCookie")
public class GetCookieServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 通过request对象获取所有的cookieCookie[] cookies = req.getCookies();// 通过for循环遍历cookieif (cookies != null) {for (Cookie cookie : cookies) {System.out.println(URLDecoder.decode(cookie.getName(),"UTF-8")+" " + URLDecoder.decode(cookie.getValue(),"UTF-8"));}}}
}
5.cookie的优缺点
优点:
缺点:
上一篇:ECharts数据可视化(案例)
下一篇:证监会:从严加强干部监督制度建设