java cookie 工具类
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 工具类的更多相关文章
- Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie
Java Cookie工具类,Java CookieUtils 工具类,Java如何增加Cookie >>>>>>>>>>>>& ...
- Java Cookie工具类
1.Cookie跨域 Cookie不能跨顶级域名访问,但是二级域名可以共享Cookie,所以要实现跨域,有一定的局限性. 2.代码 package com.DingYu.Cookie; import ...
- Cookie工具类 - CookieUtil.java
Cookie工具类,提供Cookie的创建.获取.删除方法. 源码如下:(点击下载 -CookieUtil.java ) import javax.servlet.http.Cookie; impor ...
- Cookie工具类
import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet ...
- 180425、cookie工具类
package com.thinkgem.jeesite.common.utils; import java.io.UnsupportedEncodingException; import java. ...
- Cookie 工具类
一.导入 jar 包 <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet ...
- Cookie工具类(获取cookie,设置cookie)
import java.io.UnsupportedEncodingException; import java.net.URLDecoder;import java.net.URLEncoder; ...
- Java开发工具类集合
Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...
- cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题
最近在解决XSS注入的问题,由于使用的servlet版本是2.5,不支持httpOnly的属性,故做了个工具类来实现cookie的httpOnly的功能.全类如下: /** * cookie工具类,解 ...
随机推荐
- LaTeX简单使用方法
Content LaTeX的用途 LaTeX文件布局 LaTeX的文档格式 公式环境 图的排版 表格的排版 有序列表和无序列表 引用 伪代码 参考文献 LaTeX的用途 LaTeX是一种基于TeX的排 ...
- Mac OS X 10.8.2终端切换root用户
方法一:1. 打开Terminal2. jonesduan-MacBook-Pro:~ user$ sudo -i3. 输入root密码即可. 方法二:和方法一中1和3步相同,只是第二步输入的命令不是 ...
- Ubuntu和Win双系统解决主板时间差
由于U和W两个系统的默认时间相差8小时,且会自动改变电脑主板里的默认时间,需要在U中进行设置. timedatectl set-local-rtc true
- iOS 企业证书的使用文档
IN-HOUSE应用程序分发 下面介绍下使用网络方式进行部署的方式,用户直接在iPhone/iPad的Safari浏览器里面输入URL地址即可安装, 注意:目前对于这种企业级开发的应用程序最好的分发方 ...
- Android 笔记 Intent and Bundle day7
学习了Intent与Bundle的使用,进行应用中的交互 package com.example.intent; import android.app.Activity; import android ...
- Android学习资源整理
官方文档:https://developer.android.com/guide/index.html (万万没想到居然有中文) 网友整理的学习笔记,挺不错的 http://www.runoob.co ...
- c语言快速入门2
如果你想快速入门计算机,可以参考我的上一篇帖子,先了解一些必备的软知识,然后再来进行语言的快速入门 计算机入门基础知识 c语言快速入门1 1.1.12 函数的概念 函数的定义:c语言的基本单位,c语言 ...
- WooCommerce
http://devework.com/woocommerce.html https://woocommerce.com/ https://woocommerce.com/product-catego ...
- vuex
英文:(Introduction)中文:https://github.com/vuejs/vuex/issues/176(贡献者努力中)
- (转) JAVA中如何设置图片(图标)自适应Jlable等组件的大小
一.问题: 一个程序,组件上设置某个图片作为图标,因为的label(应该说是组件)已经设定了固定大小, 所以再打开一些大图片时,超过组件大小的部分没显示出来,而小图片又没填充完整个组件 二.解决这个问 ...