• Cookie用法简介


    java操作Cookie---javax.servlet.http.Cookie

    1.增加一个Cookie

    Cookie cookie = new Cookie("username","zhangsan");
    cookie.setPath("/");
    cookie.setMaxAge(7*24*3600);//设置生存期7天
    response.addCookie(cookie);

    2.读取Cookie

    String username="";
    
    Cookie[] cookies = request.getCookies();
    
    for (Cookie cookie : cookies){
        if (cookie.getName().equals("username")){
            username = cookie.getValue();
        }
    }

    3.删除Cookie

    Cookie cookie = new Cookie("username",null);
    cookie.setPath("/");
    cookie.setMaxAge(0);
    response.addCookie(cookie);

     

    为了方便操作,将其封装进CookieUtil类中,如下:

    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    public class CookieUtil {
        /**
         * 增加一个Cookie
         */
        public static void addCookie(HttpServletResponse response,String name,String value,int maxAge){
            Cookie cookie = new Cookie(name,value);
            cookie.setPath("/");
            if (maxAge>0){
                cookie.setMaxAge(maxAge);
            }
            response.addCookie(cookie);
        }
    
        /**
         * 根据name获取Cookie的value值
         */
        public static String getCookieValue(HttpServletRequest request,String name){
            Cookie[] cookies = request.getCookies();
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(name)){
                    return cookie.getValue();
                }
            }
            return null;
        }
    
        /**
         * 根据name获取Cookie
         */
        public static Cookie getCookieByName(HttpServletRequest request,String name){
            Cookie[] cookies = request.getCookies();
            for (Cookie cookie : cookies) {
                if (cookie.getName().equals(name)){
                    return cookie;
                }
            }
            return null;
        }
    
        /**
         *删除Cookie
         */
        public static void clear(HttpServletResponse response,String name){
            addCookie(response,name,null,0);
        }
    
    }

    此时再进行操作就很方便了:

    1.增加一个Cookie

    CookieUtil.addCookie(response,"username","zhangsan",7*24*3600);

    2.读取Cookie

    String username = CookieUtil.getCookieValue(request,"username");

    3.删除Cookie

    CookieUtil.clear(response,"username");

     

    jQuery操作Cookie---jquery.cookie.js

    在jQuery中,引入Cookie插件后,可以很方便地定义某个cookie名称,并设置cookie值。

    所需js文件:jquery-1.11.3.js 和 jquery.cookie.js

    在导入cookie插件后,可以通过一个全局性的方法管理客户端的cookie对象,格式如下:

    $.cookie(名称, 值, [option])

    如果是写入或设置cookie值,其调用的格式如下:

    $.cookie(cookieName, cookieValue)

    如果是读取cookie值,其调用的格式如下:

    $.cookie(cookieName)

    如果是销毁cookie值,其调用的格式如下:

    $.cookie(cookieName, null)

    在方法$.cookie()中,可选项参数[option]以对象的形式展示,用于补充说明设置的cookie对象,其常用的属性如下:

    $.cookie(cookieName, cookieValue, {
        expires: //有限日期,可以是一个整数或一个日期(单位:天)
        path: //cookie值被保存的路径,默认值与创建页路径一致
        domain: //cookie域名属性,默认值与创建页域名一样
        secure: //一个布尔值,表示传输cookie值时,是否需要一个安全协议
    })

    请看如下示例:

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
      <title>cookie插件</title>
      <script type="text/javascript" src="js/jquery-1.11.3.js"></script>
      <script type="text/javascript" src="js/jquery.cookie.js"></script>
      <style type="text/css">
        body{font-size:13px}
        .divFrame{260px;border:solid 1px #666}
        .divFrame .divTitle{padding:5px;background-color:#eee;font-weight:bold}
        .divFrame .divContent{padding:8px;line-height:1.6em}
        .divFrame .divBtn,#divData{padding-bottom:8px;padding-left:8px}
        .txt{border:#666 1px solid;padding:2px;150px;margin-right:3px}
        .btn {border:#666 1px solid;padding:2px;80px;
          filter: progid:DXImageTransform.Microsoft.Gradient(GradientType=0,StartColorStr=#ffffff, EndColorStr=#ECE9D8);}
      </style>
      <script type="text/javascript">
        $(function() {
          if ($.cookie("UserName")!="null") { //如果有值,则显示在文本框中
            $("#UserName").val($.cookie("UserName"));
            $("#UserPass").val($.cookie("UserPass"));
          }
          $("#sbtUser").click(function() { //表单提交事件
            if ($("#chkSave").prop("checked")) { //如果选中了保存"用户名"项
              $.cookie("UserName", $("#UserName").val(), {path: "/", expires: 7} )//设置Cookie值,有效期为7天
              $.cookie("UserPass", $("#UserPass").val(), {path: "/", expires: 7} )
            }else {
              $.cookie("UserName", null, {path: "/"})//销毁Cookie值
              $.cookie("UserPass", null, {path: "/"})
            }
    //        return false; //表单不提交
          })
        })
      </script>
    </head>
    <body>
    <form method="post" action="login.do">
      <div class="divFrame">
          <div class="divTitle">用户登录</div>
          <div class="divContent">
              <div>用户名:<br /><input id="UserName" name="UserName" type="text" class="txt" /></div>
              <div>密码:<br /><input id="UserPass" name="UserPass" type="password" class="txt" /></div>
              <div><input id="chkSave" type="checkbox" checked />记住我</div><%--默认为选中--%>
          </div>
          <div class="divBtn">
              <input id="sbtUser" type="submit" value="提交" class="btn" />
          </div>
      </div>
    </form>
    </body>
    </html>

    代码执行后的效果如下:

    1      2

    左图为首次登陆的界面,右图为下次登陆的页面

  • 相关阅读:
    设计师
    仅用递归函数和栈操作逆序一个栈
    用两个栈实现队列
    设计一个有getMin功能的栈(2)
    设计一个有getMin功能的栈(1)
    Java 泛型
    servlet里获得jsp页面里select的选项之值
    mac上mysql的GUI工具sequel pro
    mac安装mysql的两种方法(含配置)
    [转]在Mac系统中安装配置Tomcat及和Eclipse 配置
  • 原文地址:https://www.cnblogs.com/weilunhui/p/4559022.html
Copyright © 2020-2023  润新知