js 和java对cookie的操作

在js里面对Cooie操作:

/**
 * 通过正则表达式获得cookie
 * 
 * @param cookieName
 * @returns cookievalue
 */
function getCookie(cookieName) {
var re = new RegExp("\\b" + cookieName + "=([^;]*)\\b");
var arr = re.exec(document.cookie);
return arr ? arr[1] : "";
}
/**
 * 通过截取的方法获得cookie的值
 * 
 * @param cookieName
 * @returns cookievalue
 */
function getCookie2(cookieName) {
var start = document.cookie.indexOf(cookieName + "=");
if (start == -1) {
return "";
}
start = start + cookieName.length + 1;
var end = document.cookie.indexOf(";", start);
if (end = -1) {
end = document.cookie.length;
}
return document.cookie.substring(start, end);
}
/**
 * 通过分组的方式获得cookie的值
 * 
 * @param cookieName
 * @returns cookievalue
 */
function getCookie3(cookieName) {
var cookies = document.cookie.split("; ");// 一个分号加一个空格
if (!cookies.length) {
return "";
}
var pair = [ "", "" ];
for ( var i = 0; i < cookies.length; i++) {
pair = cookies[i].split("=");// 以赋值号分隔,第一位是Cookie名,第二位是Cookie值
if (pair[0] == cookieName) {
break;
}
}
return pair[1];
}


// Expires,过期日期,一个GMT格式的时间,当过了这个日期之后,浏览器就会将这个Cookie删除掉,当不设置这个的时候,Cookie在浏览器关闭后消失
// Path,一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie
// Domain,子域,指定在该子域下才可以访问Cookie,例如要让Cookie在bbs.x-life.com下可以访问,但在news.x-life.com下不能访问,则可将domain设置成bbs.x-life.com
// Secure,安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(没有值),则只有当使用https协议连接时cookie才可以被页面访问
// 注意:Cookie安全机制要求站点页面只能访问本站点的Cookie,不能访问其它站点的Cookie。同时,最好在设置Cookie时使用encodeURI对象进行URI编码,在取出Cookie时再使用decodeURI对其进行解码!
function setCookie(name, value, expires, path, domain, secure) {
var str = name + "=" + encodeURI(value);// 不要忘了在对应getCookie函数里面加上decodeURI方法
if (expires) {
str += "; expires=" + expires.toGMTString();
}
if (path) {
str += "; path=" + path;
}
if (domain) {
str += "; domain=" + domain;
}
if (secure) {
str += "; secure";
}
document.cookie = str;
}
// 删除Cookie
// 没有删除Cookie的直接的方法,但可以变通一下来删除Cookie!
function delCookie(cookieName) {
var expires = new Date();
expires.setTime(expires.getTime() - 1);// 将expires设为一个过去的日期,浏览器会自动删除它
document.cookie = cookieName + "=; expires=" + expires.toGMTString();
}
function getAllCookies() {
return document.cookie;
}



在java语句里面对Cookie操作:

package com.util;


import java.util.HashMap;
import java.util.Map;


import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


/**
 * Cookie操作
 * 
 * @author bokee
 * 
 */
public class CookieUtil {


/**
* 添加Cookie
* 
* @param response
* @param name
*            Cookie名称
* @param value
*            Cookie值
* @param maxAge
*            Cookie周期
* @param path
*            一个路径,在这个路径下面的页面才可以访问该Cookie,一般设为“/”,以表示同一个站点的所有页面都可以访问这个Cookie
* @param domain
*            子域,指定在该子域下才可以访问Cookie,例如要让Cookie在bbs.x-life.com下可以访问,但在news.x-
*            life.com下不能访问,则可将domain设置成bbs.x-life.com
* @param secure
*            安全性,指定Cookie是否只能通过https协议访问,一般的Cookie使用HTTP协议既可访问,如果设置了Secure(
*            没有值),则只有当使用https协议连接时cookie才可以被页面访问
*            注意:Cookie安全机制要求站点页面只能访问本站点的Cookie
*            ,不能访问其它站点的Cookie。同时,最好在设置Cookie时使用encodeURI对象进行URI编码
*            ,在取出Cookie时再使用decodeURI对其进行解码!
*/
public static void addCookie(HttpServletResponse response, String name,
String value, int maxAge, String path, String domain, boolean secure) {
if (name == null)
return;
Cookie cookie = new Cookie(name, URLEncoder.encode(value,"UTF-8"));  //编码后写入Cookie,防止中文乱码
if(path!=null)
cookie.setPath(path);
if (maxAge > 0)
cookie.setMaxAge(maxAge);
if(domain!=null)
cookie.setDomain(domain);
cookie.setSecure(secure);
response.addCookie(cookie);
}


/**
* 根据名字获取cookie
* 
* @param request
* @param name
*            cookie名字
* @return
*/
public static Cookie getCookie(HttpServletRequest request, String name) {
   Cookie cookies[] = request.getCookies();
   if (cookies == null || name == null || name.length() == 0) {
     return null;
   }
   for (int i = 0; i < cookies.length; i++) {
     if (name.equals(cookies[i].getName()))
       return cookies[i];
   }
   return null;
 }

/**
* 通过name查询cookie里面的值,注意解码,防止中文乱码
* @param request
* @param name
* @return
* @throws UnsupportedEncodingException
*/
public static String getCookieValueByName(HttpServletRequest request, String name) throws UnsupportedEncodingException
{
Cookie cookie=getCookie(request,name);
if(cookie!=null)
{
String value=cookie.getValue();
return URLDecoder.decode(value,"UTF-8");
}
return null;
}
/**
* 删除Cookie
* @param request
* @param response
* @param cookie
*/
public static void deleteCookie(HttpServletRequest request,
     HttpServletResponse response, Cookie cookie) {
   if (cookie != null) {
     cookie.setPath(getPath(request));
     cookie.setValue("");
     cookie.setMaxAge(0);
     response.addCookie(cookie);
   }
 }
/**
* 将cookie封装到Map里面
* 
* @param request
* @return
*/
@SuppressWarnings("unused")
private static Map<String, Cookie> ReadCookieMap(final HttpServletRequest request) {
Map<String, Cookie> cookieMap = new HashMap<String, Cookie>();
Cookie[] cookies = request.getCookies();
if (null != cookies) {
for (Cookie cookie : cookies) {
cookieMap.put(cookie.getName(), cookie);
}
}
return cookieMap;
}
private static String getPath(HttpServletRequest request) {
   String path = request.getContextPath();
   return (path == null || path.length()==0) ? "/" : path;
 }
}


到此!js 和java对Cookie的封装都完成了

参考文献地址:http://www.blogjava.net/fastunit/archive/2008/03/25/188534.html

http://www.open-open.com/lib/view/open1331278611374.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值