首页 资讯 社群 我的社区 搜索

Cookie 在web项目中的使用

高大上
2018-11-23 15:39:33

  今天在写一个demo的时候突然发现自己一直以来都是在使用session保存客户端信息,Cookie貌似一次都没有用过。这里记录下:

cookie 是一个非常具体的东西,指的就是浏览器里面能永久存储的一种数据,仅仅是浏览器实现的一种数据存储功能。

cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

具体用法如下,java端:

    @RequestMapping("/getCookie.do")
    @ResponseBody
    public String getCooking(HttpServletResponse response, HttpServletRequest request){
        //创建Cookie对象
        Cookie cookie = new Cookie("cookie1","aaaaaaaaaaaaaaaaaaaaaaaaa");
        //将cooking设置到响应中,响应客户端时会自动带出去
        response.addCookie(cookie);
        return "cookie";
    }

    @RequestMapping("checkCookie.do")
    @ResponseBody
    public String checkCookie(HttpServletResponse response, HttpServletRequest request){
        //获取全部的cooking,是一个数组
        Cookie[] cookies = request.getCookies();
        Cookie cookie =null;
        for (int i=0;i<cookies.length;i++){
            cookie = cookies[i];
            //便利数组,取出cookie的K和V
            System.out.println(cookie.getName());
            System.out.println(cookie.getValue());
        }
        return "check";
    }

 

 web端代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div id="message"></div>
<a onclick="addCookie()"> 设置cookie </a>
</body>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
<!--jquery.cookie是jq的扩展库,需要单独引入,且一定要放在jq之后-->
<script src="https://cdn.bootcss.com/jquery-cookie/1.4.1/jquery.cookie.js"></script>
<script>
    //原生方法获取全部cookie
    var str = document.cookie;
    $('#message').text(str);
    
    //使用jq 添加cookie信息。jq获取cooking的方法为  $.cookie('CookingName')
    function addCookie() {
        $.cookie("addCooking","bbbbbbb");

    }
</script>
</html>

注意:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,后面的cookie会覆盖前面的。

用户评论