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工具类,解 ...
随机推荐
- 面向对象Part1对象的创建和Static!
面向对象的特征: 1)封装 2)继承 3)多台 4)抽象 创建的是什么类型的对象 变量的声明就是什么类型. class Servant{ void xxx (){} } Servant s1 = ne ...
- Linux-Memory小记
以前我对这块认识很模糊,而且还有错误的认识:今天由我同事提醒,所以我决定来好好的缕缕这块的关系.图: -------------------------------------------1.参数含义 ...
- Android JNI总结
@Dlive 0x01 JNI介绍 JNI是Java Native Interface的缩写,JNI不是Android专有的东西,它是从Java继承而来,但是在Android中,JNI的作用和重要性大 ...
- Mosquitto搭建Android推送服务番外篇一:各种报错解决
文章钢要: 目前笔者在开发搭建Mosquitto服务器,在此期间遇到很多实际问题,所以走了很多弯路,在这里写出来为大家提供一些帮助. 1.安装完成后启动Mosquitto报错 执行mosquitto客 ...
- mybatis调用存储过程 无参、带有输入输出参数,输出游标类型的 存储
存储过程在小公司用的不多,但是如果业务比较复杂或者性能要求比较苛刻的时候存储过程就派上用场了,ibatis的前期的一些版本貌似不支持存储过程因此我选择了mybatis来做实验. 1.无输入和输出参数的 ...
- 五种方式让你在java中读取properties文件内容不再是难题
一.背景 最近,在项目开发的过程中,遇到需要在properties文件中定义一些自定义的变量,以供java程序动态的读取,修改变量,不再需要修改代码的问题.就借此机会把Spring+SpringMVC ...
- 给DOM生成的元素添加事件
问题:通过js给页面添加新元素,并给该元素添加绑定事件,但新添加的元素上却没有绑定任何事件. 常见例子:在处理表格的时候,每行行末有个删除按钮,如下图.点击删除按钮的时候删除这一行. //html部分 ...
- 使用Selector改变TextView的字体颜色textColor的方法
先上Selector文件,名字为singer_fragment_top_text_style.xml, <?xml version="1.0" encoding=" ...
- JS的双等和三等的区别
在JS会碰到一个奇怪的运算符"===",之前学JAVA和C语言,只有"==",JS冒出个"===",挺奇怪的,遂google之... 在JS ...
- MySQL开发规范
字段设计 (1)建议使用UNSIGNED存储非负数值. (2)建议使用INT UNSIGNED存储IPV4. (4)INT类型固定占用4字节存储,例如INT(4)仅代表显示字符宽度为4位,不代表存储长 ...