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{width: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;width:150px;margin-right:3px}
    .btn {border:#666 1px solid;padding:2px;width: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

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

posted @ 2015-06-07 20:25  小样儿1020  阅读(483)  评论(0编辑  收藏  举报