程序员社区

【Servlet-1】Cookie

  1. Cookie可以保留会话状态,但是这个状态保存在客户端上
    只要Cookie清除,或者Cookie失效,这个会话状态就没有了
    Cookie是保存在浏览器客户端上的,
    但是也可以保存在浏览器的缓存中,浏览器关闭Cookie消失
    Cookie也可以保存在客户端的硬盘中,浏览器关闭Cookie还在,除非Cookie失效

  2. Cookie不止在Javaweb中,只要是web开发,只要是B/S架构,只要基于HTTP协议就有Cookie的存在,Cookie这种机制是http协议规定的。

  3. 在Java中Cookie被当做类来处理,使用new运算符可以创建Cookie对象,二而且Cookie有两部分组成name和value,并且name和value都是字符串。

  4. 默认情况下,服务器发送Cookie给浏览器之后,浏览器将Cookie保存在缓存当中,只要不关闭浏览器,Cookie永远存在,并且有效。
    当浏览器关闭以后,缓存中的Cookie被清除。

  5. 请求路径和Cookie是紧密相连的,不同的请求路径会发送不同的Cookie,默认情况下,Cookie是和http://localhost:8080/30/绑定在一起的

  6. 如果执行了cookie.setPath("/30/king")那么cookie将会和这个路径绑定在一起,只有执行这个路径才会将cookie发送给浏览器

  7. 默认情况下,没有设置Cookie的有效时长,该Cookie被默认保存在浏览器的缓存当中,只要不关闭浏览器,Cookie就存在,只要关闭浏览器,Cookie就消失,我们可以通过设置Cookie的时长,以保证Cookie保存在硬盘文件中,但是这个时长必须是大于0的,只要这个时长大于0,Cookie就会保存在客户端硬盘文件 中。
    Cookie时长=0;直接被删除
    Cookie时长<0;不会被存储
    Cookie时长>0;存储在硬盘文件中
    cookie1.setMaxAge(60*60);

  8. 浏览器提交Cookie给服务器,服务器怎么接收Cookie?

    //从request对象中获取所有Cookie
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies){
                String cookieName = cookie.getName();
                String cookieValue = cookie.getValue();
                System.out.println(cookieName+"="+cookieValue);
            }
        }
  1. 浏览器是可以禁用Cookie的
    表示服务器发送过来的Cookie,浏览器可以不要

cookie.html文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<a href="/30/CreateAndSendCookieToBrowser">服务器创建Cookie并发送Cookie到浏览器</a>
<a href="/30/SendCookieToServer">浏览器发送Cookie给服务器</a>
</body>
</html>

CreateAndSendCookieToBrowser文件:

package Cookie;

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("/CreateAndSendCookieToBrowser")
public class CreateAndSendCookieToBrowser extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建Cookie对象
        Cookie cookie1 = new Cookie("username","zhangsna");
        Cookie cookie2 = new Cookie("password","123");

        //设置Cookie的有效时间
        cookie1.setMaxAge(60*60);
        cookie2.setMaxAge(60*60);

        //将Cookie对象发送给浏览器客户端
        response.addCookie(cookie1);
        response.addCookie(cookie2);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

SendCookieToServer文件:

package Cookie;

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("/SendCookieToServer")
public class SendCookieToServer extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //从request对象中获取所有Cookie
        Cookie[] cookies = request.getCookies();
        if(cookies!=null){
            for(Cookie cookie:cookies){
                String cookieName = cookie.getName();
                String cookieValue = cookie.getValue();
                System.out.println(cookieName+"="+cookieValue);
            }
        }
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

赞(0) 打赏
未经允许不得转载:IDEA激活码 » 【Servlet-1】Cookie

相关推荐

  • 暂无文章

一个分享Java & Python知识的社区