package com.xxx.xxx.xxx.xxx; 

 import java.net.URLDecoder;
import java.net.URLEncoder; import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils;
import org.apache.http.cookie.SetCookie;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.ResponseBody; /**
* Cookie 工具类
*
* @author
* @date
*/
public final class CookieUtils {
protected static final Logger LOGGER = LoggerFactory
.getLogger(CookieUtils.class); /**
* 获取cookie的值
*
* @author
* @date
* @param req
* @param res
* @param cookieName
* @param isDecoder
* 是:utf-8编码 否:不编码使用默认的
* @return
*/
public static String getCookieValue(HttpServletRequest req, String cookieName, Boolean isDecoder) {
Cookie[] cookieList = req.getCookies();
if (cookieList == null || cookieName == null) {
return null;
}
String retValueString = null;
try {
for (int i = 0; i < cookieList.length; i++) {
if (cookieList[i].getName().equals(cookieName)) {
if (isDecoder) {
retValueString = URLDecoder.decode(
cookieList[i].getValue(), "utf-8");
} else {
retValueString = cookieList[i].getValue();
}
}
}
} catch (Exception e) {
LOGGER.error("Cookie Decode Error : ", e);
}
return retValueString; } /**
* 设置cookie
*
* @author
* @date
* @param req
* @param res
* @param cookieName
* @param cookieValue
* @param cookieMaxAge
* 设置cookie最大生存时间 单位秒
* @param isDecoder
* 是:utf-8编码 否:不编码使用默认的
*/
public static void setCookie(HttpServletRequest req,
HttpServletResponse res, String cookieName, String cookieValue,
int cookieMaxAge, Boolean isDecoder) {
if (cookieValue == null) {
LOGGER.info(cookieName + " 为 null");
return;
}
try {
if (isDecoder) {
cookieValue = URLEncoder.encode(cookieValue, "utf-8");
}
Cookie cookie = new Cookie(cookieName, cookieValue);
if (cookieMaxAge > 0) {
cookie.setMaxAge(cookieMaxAge);
}
if (req != null) {
cookie.setDomain(getDomainName(req)); //设置cookie域名
}
cookie.setPath("/");
res.addCookie(cookie);
} catch (Exception e) {
LOGGER.error("Cookie Decode Error : ", e);
} }
/**
* 删除cookie
* @author
* @date
* @param req
* @param res
* @param cookieName
*/
public static void deleteCookie(HttpServletRequest req,HttpServletResponse res,String cookieName){
setCookie(req, res, cookieName, "", 0, false);
} /**
* 获取cookie作用域
* @author gaobing
* @date 2016年11月23日 上午11:13:37
* @param req
* @return
*/
private static final String getDomainName(HttpServletRequest req) {
String domainName = "";
String serverName = req.getRequestURL().toString(); //String basePath = req.getScheme()+"://"+req.getServerName()+":"+req.getServerPort();
if (StringUtils.isNotBlank(serverName)) {
serverName = serverName.toLowerCase().substring(7);
final int end = serverName.indexOf("/");
serverName = serverName.substring(0, end);
final String[] domains = serverName.split("\\.");// \\表示转义
int len = domains.length;
if (len > 3) {
// www.xxx.com.cn
domainName = "." + domains[len - 3] + "." + domains[len - 2]
+ "." + domains[len - 1];
} else if (len <= 3 && len > 1) {
// xxx.com or xxx.cn
domainName = "." + domains[len - 2] + "." + domains[len - 1];
} else {
domainName = serverName;
}
} if (domainName != "" && domainName.indexOf(":") > 0) {
String[] ary = domainName.split("\\:");
domainName = ary[0];
}
return domainName;
} }

注意:删除cookie时 浏览器不会立刻删除,重启后会删除。可根据value 值判断cookie是否被删除

java cookie 工具类的更多相关文章

  1. Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie

    Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...

  2. Java Cookie工具类

    1.Cookie跨域 Cookie不能跨顶级域名访问,但是二级域名可以共享Cookie,所以要实现跨域,有一定的局限性. 2.代码 package com.DingYu.Cookie; import ...

  3. Cookie工具类 - CookieUtil.java

    Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; impor ...

  4. Cookie工具类

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

  5. 180425、cookie工具类

    package com.thinkgem.jeesite.common.utils; import java.io.UnsupportedEncodingException; import java. ...

  6. Cookie 工具类

    一.导入 jar 包 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet ...

  7. Cookie工具类(获取cookie,设置cookie)

    import java.io.UnsupportedEncodingException; import java.net.URLDecoder;import java.net.URLEncoder; ...

  8. Java开发工具类集合

    Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...

  9. cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题

    最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能.全类如下: /** * cookie工具类,解 ...

随机推荐

  1. composer

    composer 是PHP框架的包安装工具,类似于bower ,npm.bundler. 是命令行工具,没有图形界面. 系统要求 运行 Composer 需要 PHP + 以上版本.一些敏感的 PHP ...

  2. js 对数据转换成数据容量单位

    function bytesToSize(value) { alert(value); alert('value'); debugger; if (value === 0) return '0 B'; ...

  3. combobox实现模糊查询自动填充

    利用winform设计软件界面时,经常用到combobox控件,但有时需要绑定数据表中的数据,更进一步,需要实现对数据表中数据的模糊查询功能.本文就讲讲述如何用C#实现combobox下拉列表的模糊查 ...

  4. Python全栈【异常处理】

    Python全栈[异常处理] 本节内容: 1.异常处理 2.什么时候用异常处理 异常处理 1.异常处理: 异常就是程序运行时发生错误的信号,异常处理是在编程过程中为了增加友好性,在程序出现bug时一般 ...

  5. C#中的 特性 详解(转载)

    本篇幅转载于:http://www.cnblogs.com/rohelm/archive/2012/04/19/2456088.html C#中特性详解 特性提供了功能强大的方法,用于将元数据或声明信 ...

  6. 前端JS常用字符串处理实例

    字符串处理常常用在处理服务器回传的数据.动态拼接生成html等,是前端面试的必考题. 我觉得字符串处理这种常用到的,一定要了然于心,不然用到时急急忙忙去翻手册费半天. 入正题,首先提出平常遇到的几个需 ...

  7. ".NET Compact Framework v2.0 could not be found."

    参考: http://blog.csdn.net/godcyx/article/details/7348431 问题原因: That's a known issue where VS can't di ...

  8. Mosquitto搭建Android推送服务(二)Mosquitto简介及搭建

    文章钢要: 1.了解Mosquitto服务器 2.在Liunx中搭建Mosquitto服务器 3.设置Mosquitto集群 一.Mosquitto简介 一款实现了消息推送协议 MQTT v3.1 的 ...

  9. VO对象和PO对象的区别

    VO,值对象(Value Object),PO,持久对象(Persisent Object),它们是由一组属性和属性的get和set方法组成.从结构上看,它们并没有什么不同的地方.但从其意义和本质上来 ...

  10. 解决绝对定位div position: absolute 后面的<a> Link不能点击

    今天布局的时候,遇到一个bug,当DIV设置为绝对定位时,这个div后面的相对定位的层里面的<a>Link标签无法点击. 网上的解决方案是在绝对定位层里面添加:pointer-events ...