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. JS学习-创建对象

    1.标准创建对象模式 var person = new Object(); person.name = "Nicholas"; person.age = 29; person.jo ...

  2. QSS的应用

    1.在同一级别的widget中,如果指定widget有设置样式表,则在qss对该样式表的设置无效,对比验证: (StatusWidget未设置widget样式--运行截图) (StatusWidget ...

  3. 理解 Delphi 的类(八) - 关于类的定义

      //标准语法   TMyClass1 = class(TObject)   end;   //如果是继承自 TObject 可以省略   TMyClass2 = class   end;   // ...

  4. mkdir命令

    [mkdir]   创建目录     mkdir ===make directory 命令格式: mkdir [OPTION]... DIRECTORY 命令功能: 通过 mkdir 命令可以实现在指 ...

  5. Python flask 基于 Flask 提供 RESTful Web 服务

    转载自 http://python.jobbole.com/87118/ 什么是 REST REST 全称是 Representational State Transfer,翻译成中文是『表现层状态转 ...

  6. Mac 编写oracle 连接脚本

    首先需要本地存有sqlplus命令, 如果没有则需要到官网下载 也可点击我进行下载 (解压 readme.txt 有安装配置说明): 在Oracle官网下载instant client for os ...

  7. 转行进入IT前端,目标全栈

    选择进入IT这个行业,未来充满着挑战,未来充满着机遇,互联网已经走入高速稳定的发展正轨了,前端大时代也已经到来了.前端之路怎么走,前端需要不停地学习新知识,跟紧时代的步伐,成为全栈工程师是前端的目标. ...

  8. jquery 双向select控件bootstrap Dual listbox

    http://www.cnblogs.com/hangwei/p/5040866.html       -->jquery 双向select控件bootstrap Dual listboxhtt ...

  9. iOS10 远程推送代码 以及服务器端代码(.net)

    // // AppDelegate.m // MyPushDemo // // Created by justapple on 16/12/25. // Copyright © 2016年 dengq ...

  10. CC2540自己的配置文件

    首先要指出,字段属性有notify的不能同时有read,write属性,别问哥,哥也不知道,反正我做的就不能notify,只能read,write. 分享的程序段第一字段有notify属性,第二字段r ...