zoukankan      html  css  js  c++  java
  • java和js对cookie的存取删

    1.纯后端存cookie和取cookie
    //设置cookie值
    String username="Demo123";
    Cookie cookie=new Cookie("users",username); //设置cookie名为users,值为Demo123
    //设置一些cookie属性
    cookie.setPath("/"); //这个可以理解为cookie的作用范围,如果不写的默认为当前项目,加上这个作用于整个tomcat下所有项目都可以,也可以根据自己需求来写路径
    cookie.setMaxAge(60 * 60 * 24 * 7); //设置有效时间为7天
    response.addCookie(cookie); //存入cookie


    String passwod="mima";
    Cookie cookie2=new Cookie("pawd",passwod); //设置cookie名为pawd,值为mima
    cookie2.setPath("/");
    cookie2.setMaxAge(60 * 60 * 24 * 7); //设置有效时间为7天
    response.addCookie(cookie2); //存入cookie21


    //读取cookie
    String username="";
    Cookie[] cookies=request.getCookies();
    //先判断cookies是否等于空,没有的话也就不用取了
    if(cookies != null){
    //因为cookie很有可能不止一个,所以我们要采用循环的方式
    for(Cookie ck:cookies){
    //判断cookie中有没有users这个cookie名
    if(ck.getName().equals("users"){
    //有的话直接取出
    username=ck.getValue(); //这就取出了刚刚存的Demo123
    }
    if(ck.getName().equals("pawd"){
    //有的话直接取出
    passwod=ck.getValue(); //这就取出了刚刚存的mima
    }
    }
    }

    //删除cookie,例如删除users的cookie
    //首先需要获取到cookie才能删除
    Cookie cookies[] = request.getCookies();
    if (cookies != null) {
    for (int i = 0; i < cookies.length; i++){
    if (cookies[i].getName().equals("users")){
    Cookie cookie = new Cookie("users","");//这边得用"",不能用null
    cookie.setPath("/");//设置成跟写入cookies一样的
    cookie.setMaxAge(0);  
    cookie.setHttpOnly(true);//如果在Cookie中设置了"HttpOnly"属性,那么通过程序(JS脚本、Applet等)将无法读取到Cookie信息,这样能有效的防止XSS攻击。
    response.addCookie(cookie); //到这里users就被删掉了
    }
    }
    }

    --------------------------------------------------------------------
    因为cookie是存在于浏览器端,session存在于服务器端(很肤浅的理解)
    存cookie的时候 用的是response
    取得时候用的是request 是因为如果用request存的话,html和js就没法获取到cookie了,这是最简单的理解
    --------------------------------------------------------------------

    2.js存cookie和读cookie和删cookie,已经封装成各自的方法,用的时候直接拿过来就行了
    function setCookie(name, value) {
    var exp = new Date();
    exp.setTime(exp.getTime() + 7 * 24 * 60 * 60 * 1000); //7天过期
    document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString();
    return true;
    };
    function delCookie(name) {
    var exp =newDate();
    exp.setTime(exp.getTime() - 1);
    var cval=getCookie(name);
    if(cval!=null)
    document.cookie= name +"="+cval+";expires="+exp.toGMTString();
    return true;
    };
    //读取cookie 不止是前端存的cookie哦,后端存的也可以取的
    function getCookie(name) {
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
    if(arr=document.cookie.match(reg)){
    return unescape(arr[2]);
    }else{
    return null;
    }
    };
    //上面的读取是通过正则表达式来读
    也可以通过下面这种方式,先分隔,再遍历取出
    function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for(var i=0; i<ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1);
    if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
    }

  • 相关阅读:
    LeetCode-165 Compare Version Numbers
    shop--6.店铺注册--Thumbnailator图片处理和封装Util
    shop--6.店铺注册
    shop--5.使用Junit进行验证
    shop--4.SSM的各项配置
    shop--3.配置Maven
    shop--2.项目设计和框架搭建
    shop--1.创建maven项目
    AJAX 使用FormData 传送数据 DATA 为空 现象的处理
    Daemon Thread [http-nio-8080-exec-5] (Suspended (exception UnsatisfiedDependency))
  • 原文地址:https://www.cnblogs.com/yuzhuang/p/9523955.html
Copyright © 2011-2022 走看看