Utils--Cookie工具类

  1. package com.taotao.manage.util;
  2.  
  3. import java.io.UnsupportedEncodingException;
  4. import java.net.URLDecoder;
  5. import java.net.URLEncoder;
  6.  
  7. import javax.servlet.http.Cookie;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10.  
  11. import org.slf4j.Logger;
  12. import org.slf4j.LoggerFactory;
  13.  
  14. /**
  15. *
  16. * Cookie 工具类
  17. *
  18. */
  19. public final class CookieUtils {
  20.  
  21. protected static final Logger logger = LoggerFactory.getLogger(CookieUtils.class);
  22.  
  23. /**
  24. * 得到Cookie的值, 不编码
  25. *
  26. * @param request
  27. * @param cookieName
  28. * @return
  29. */
  30. public static String getCookieValue(HttpServletRequest request, String cookieName) {
  31. return getCookieValue(request, cookieName, false);
  32. }
  33.  
  34. /**
  35. * 得到Cookie的值,
  36. *
  37. * @param request
  38. * @param cookieName
  39. * @return
  40. */
  41. public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
  42. Cookie[] cookieList = request.getCookies();
  43. if (cookieList == null || cookieName == null){
  44. return null;
  45. }
  46. String retValue = null;
  47. try {
  48. for (int i = 0; i < cookieList.length; i++) {
  49. if (cookieList[i].getName().equals(cookieName)) {
  50. if (isDecoder) {
  51. retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");
  52. } else {
  53. retValue = cookieList[i].getValue();
  54. }
  55. break;
  56. }
  57. }
  58. } catch (UnsupportedEncodingException e) {
  59. logger.error("Cookie Decode Error.", e);
  60. }
  61. return retValue;
  62. }
  63.  
  64. /**
  65. * 得到Cookie的值,
  66. *
  67. * @param request
  68. * @param cookieName
  69. * @return
  70. */
  71. public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {
  72. Cookie[] cookieList = request.getCookies();
  73. if (cookieList == null || cookieName == null){
  74. return null;
  75. }
  76. String retValue = null;
  77. try {
  78. for (int i = 0; i < cookieList.length; i++) {
  79. if (cookieList[i].getName().equals(cookieName)) {
  80. retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);
  81. break;
  82. }
  83. }
  84. } catch (UnsupportedEncodingException e) {
  85. logger.error("Cookie Decode Error.", e);
  86. }
  87. return retValue;
  88. }
  89.  
  90. /**
  91. * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码
  92. */
  93. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue) {
  94. setCookie(request, response, cookieName, cookieValue, -1);
  95. }
  96.  
  97. /**
  98. * 设置Cookie的值 在指定时间内生效,但不编码
  99. */
  100. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage) {
  101. setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);
  102. }
  103.  
  104. /**
  105. * 设置Cookie的值 不设置生效时间,但编码
  106. */
  107. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, boolean isEncode) {
  108. setCookie(request, response, cookieName, cookieValue, -1, isEncode);
  109. }
  110.  
  111. /**
  112. * 设置Cookie的值 在指定时间内生效, 编码参数
  113. */
  114. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
  115. doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);
  116. }
  117.  
  118. /**
  119. * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)
  120. */
  121. public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, String encodeString) {
  122. doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);
  123. }
  124.  
  125. /**
  126. * 删除Cookie带cookie域名
  127. */
  128. public static void deleteCookie(HttpServletRequest request, HttpServletResponse response, String cookieName) {
  129. doSetCookie(request, response, cookieName, "", -1, false);
  130. }
  131.  
  132. /**
  133. * 设置Cookie的值,并使其在指定时间内生效
  134. *
  135. * @param cookieMaxage
  136. * cookie生效的最大秒数
  137. */
  138. private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
  139. try {
  140. if (cookieValue == null) {
  141. cookieValue = "";
  142. } else if (isEncode) {
  143. cookieValue = URLEncoder.encode(cookieValue, "utf-8");
  144. }
  145. Cookie cookie = new Cookie(cookieName, cookieValue);
  146. if (cookieMaxage > 0)
  147. cookie.setMaxAge(cookieMaxage);
  148. if (null != request)// 设置域名的cookie
  149. cookie.setDomain(getDomainName(request));
  150. cookie.setPath("/");
  151. response.addCookie(cookie);
  152. } catch (Exception e) {
  153. logger.error("Cookie Encode Error.", e);
  154. }
  155. }
  156.  
  157. /**
  158. * 设置Cookie的值,并使其在指定时间内生效
  159. *
  160. * @param cookieMaxage
  161. * cookie生效的最大秒数
  162. */
  163. private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response, String cookieName, String cookieValue, int cookieMaxage, String encodeString) {
  164. try {
  165. if (cookieValue == null) {
  166. cookieValue = "";
  167. } else {
  168. cookieValue = URLEncoder.encode(cookieValue, encodeString);
  169. }
  170. Cookie cookie = new Cookie(cookieName, cookieValue);
  171. if (cookieMaxage > 0)
  172. cookie.setMaxAge(cookieMaxage);
  173. if (null != request)// 设置域名的cookie
  174. cookie.setDomain(getDomainName(request));
  175. cookie.setPath("/");
  176. response.addCookie(cookie);
  177. } catch (Exception e) {
  178. logger.error("Cookie Encode Error.", e);
  179. }
  180. }
  181.  
  182. /**
  183. * 得到cookie的域名
  184. */
  185. private static final String getDomainName(HttpServletRequest request) {
  186. String domainName = null;
  187.  
  188. String serverName = request.getRequestURL().toString();
  189. if (serverName == null || serverName.equals("")) {
  190. domainName = "";
  191. } else {
  192. serverName = serverName.toLowerCase();
  193. serverName = serverName.substring(7);
  194. final int end = serverName.indexOf("/");
  195. serverName = serverName.substring(0, end);
  196. final String[] domains = serverName.split("\\.");
  197. int len = domains.length;
  198. if (len > 3) {
  199. // www.xxx.com.cn
  200. domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
  201. } else if (len <= 3 && len > 1) {
  202. // xxx.com or xxx.cn
  203. domainName = "." + domains[len - 2] + "." + domains[len - 1];
  204. } else {
  205. domainName = serverName;
  206. }
  207. }
  208.  
  209. if (domainName != null && domainName.indexOf(":") > 0) {
  210. String[] ary = domainName.split("\\:");
  211. domainName = ary[0];
  212. }
  213. return domainName;
  214. }
  215.  
  216. }

  

Utils--Cookie工具类的更多相关文章

  1. 180425、cookie工具类

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

  2. java cookie 工具类

    package com.xxx.xxx.xxx.xxx; import java.net.URLDecoder; import java.net.URLEncoder; import javax.se ...

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

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

  4. Cookie工具类

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

  5. Cookie工具类 - CookieUtil.java

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

  6. Java Cookie工具类

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

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

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

  8. Cookie 工具类

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

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

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

  10. Spring @Autowired注解在utils静态工具类

    [转] 使用场景:在一个静态方法中,如何使用以下注入: @Autowired private ItemMapper itemMapper; @Component public class TestUt ...

随机推荐

  1. 原生js总结

    数据类型 基本类型值包括: undefined,null,Boolean,Number和String,这些类型分别在内存中占有固定的大小空间,它们的值保存在栈空间,我们通过按值来访问的. 引用类型包括 ...

  2. IOS学习笔记一1

    //创建.h文件 界面的类文件(创建一个类) @interface MyClass:NSObject{ //类变量声明 int a; int b; } //类属性声明 (int) p2 //类方法声明 ...

  3. dbm.error: need 'c' or 'n' flag to open new db

    #coding=utf-8 import shelve with shelve.open("shelve.ini","w") as f: f["k1& ...

  4. https申请部署

    此案例用IIS8.0演示 前提条件: 1.HTTPS协议需要443端口,安全组和防火墙开放443端口. 2.需要SSL证书 开放端口就不说了,主要说下申请SSL证书. 1.https://www.ss ...

  5. 记录flask使用模板时出现的“Internal Server Error”错误

    在看<Flask Web开发实战:入门.进阶与原理解析(李辉著 )>时照着书上的代码抄了一遍,然后运行时发现一直出现以下的错误 书上的源代码如下 watchlist.html <he ...

  6. vue 父组件调用子组件方法

    情景: 父组件中引入上传附件的子组件:点击组件可以分别上传对应要求的图片,子组件内部循环可创建多个模块. 父组件传入数组子组件循环来创建不同的组件模块,所有事件都在子组件内部. 父组件页面的上方同时有 ...

  7. 算法笔记--最大流和最小割 && 最小费用最大流 && 上下界网络流

    最大流: 给定指定的一个有向图,其中有两个特殊的点源S(Sources)和汇T(Sinks),每条边有指定的容量(Capacity),求满足条件的从S到T的最大流(MaxFlow). 最小割: 割是网 ...

  8. JavaWeb知识点总结

    >一: 创建Web项目项目说明:1.java Resources:java源文件2.WebContent:网页内容html.css.js.jsp.资源.配置文件等 HTML:Hyper Text ...

  9. JAVA基础知识总结:十五

    一.Set接口 Set集合不允许包含相同的元素,如果试图将两个相同的元素添加到一个集合中,使用add方法,添加失败,返回false 1.HashSet HashSet是Set集合的一个实现类,大多数情 ...

  10. Ubuntu vim终端常用的快捷键

    Ubuntu中常用的快捷键 Ubuntu中的许多操作在终端(Terminal)中十分的快捷,记住一些快捷键的操作更得心应手.在Ubuntu中打开终端的快捷键是Ctrl+Alt+T.其他的一些常用的快捷 ...