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>
代码执行后的效果如下:
左图为首次登陆的界面,右图为下次登陆的页面