Cookie原理及其运用
1 概念
cookie是一种会话技术,会话:类似于生活中的谈话,消息一来一回,有问有答。
cookie会话:就是客户端与浏览器之间的谈话;
生命周期:在浏览器的开启到浏览器的关闭期间内,一直存在;包含了多次请求和多次响应;
一次会话:浏览器第一次给服务器发送请求,会话就建立了,直到有一方断开为止。
功能:在一次会话的范围内的多次请求间,共享数据。
会话方式:客户端会话技术cookie,服务器端会话技术:session
2 cookie执行过程
当客户端第一次发送请求时,浏览器做出响应时,就顺便把cookie信息传递给了客户端,(根据http协议传输的,被存放在响应头里面的)。
当浏览器再次发送请求时,就会把cookie里面的值信息顺便的带过去,所以服务器可以获取到cookie里面的值。
3 cookie快速入门
- 服务器端创建cookie对象,绑定数据
- 服务器段发送cookie对象,传给前端
- 获取cookie,拿到数据,执行过程如下图:
4 cookie的细节
-
一次是否可以多个cookie?
可以发送多个cookie,创建多个cookie对象即可。
-
cookie保存的时间是多久?
默认情况下,浏览器关闭,cookie就被销毁;
也可以自己设置时间,需要将cookie数据写入文件中,进行持久化存储。
Cookie.setMaxAge(int seconds);参数为保存的秒数。
-
cookie中是否能存取中文?
在tomcat8前,可以存取中文,8之后可以存取中文。
-
cookie的获取范围?
多个项目中的cookie值是默认不能共享的。
但是,可以使用Cookie.setPath(string path ) 设置cookie的取值,即他的虚拟路径,当虚拟路径都相同时就可以实现共享了。
5 案例:记录上次登陆时间
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Cookie[] cookie=request.getCookies();
if (cookie!=null&&cookie.length>0) {
for (Cookie cookie2 : cookie) {
if (cookie2.getName().equals("lasttime") ) {
cookie2.setMaxAge(3600);
String value=cookie2.getValue();
response.getWriter().write("last time"+value);
}
}
}else {
Cookie c1=new Cookie("lasttime", "2019年11月19日12点41分");
response.addCookie(c1);
response.getWriter().write("首次访问");
}
}