一、导入 jar 包

  1. <dependency>
  2. <groupId>javax.servlet</groupId>
  3. <artifactId>servlet-api</artifactId>
  4. <version>2.5</version>
  5. <scope>provided</scope>
  6. </dependency>

二、CookieUtils

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

Cookie 工具类的更多相关文章

  1. java cookie 工具类

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

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

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

  3. Cookie工具类

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

  4. Cookie工具类 - CookieUtil.java

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

  5. Java Cookie工具类

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

  6. 180425、cookie工具类

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

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

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

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

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

  9. C# Cookie工具类

    /// <summary> /// Cookies赋值 /// </summary> /// <param name="strName">主键& ...

随机推荐

  1. JS禁用微信复制链接、禁用转发

    $(function () { function onBridgeReady() { WeixinJSBridge.call('hideOptionMenu'); } if (typeof Weixi ...

  2. macOS10.9+xcode6编译ffmpeg2.4.2 for ios

    近期须要用到ffmpeg开发视频相关.在网上找了些编译资源,自己摸索着,总算编译ok了. 因此,记录下苦逼的编译过程,已祭奠我为之逝去的青春. 1.准备工作 首先.到ffmpeg官网下载最新到代码. ...

  3. 线程同步、死锁和通信——Java多线程(二)

    一.多线程同步 上一篇随笔中,我曾遇到对多线程程序的多次运行结果不一致的情况,这主要是因为没有对这些线程在访问临界资源做必要的控制,而接下来就用线程的同步来解决这个问题. 1.同步代码块 class ...

  4. 【Codeforces 258E】 Devu and Flowers

    [题目链接] http://codeforces.com/contest/451/problem/E [算法] 容斥原理 [代码] #include<bits/stdc++.h> usin ...

  5. 使用filezella服务器安装ftp

    使用FileZilla配置FTP站点,可参考以下步骤: 1.打开Filezilla Server服务端: 点击[Edit]->[Users],或者点击如下图标新增用户. 2.添加FTP帐号后,设 ...

  6. 最详细的CentOS 6与7对比(一):常见设置对比

    本主题将从3个角度进行对比 常见设置(CentOS 6 vs CentOS 7) 服务管理(Sysvinit vs Upstart vs Systemd) 性能测试(cpu/mem/io/oltp) ...

  7. tp框架---表单验证

    自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.分为静态验证和动态验证. 关于基础知识,请查看手册“自动验证”一章. 一.静态验证 ( ...

  8. android 学习记录-----------android 活动 意图 碎片

    将此篇博客作为记录android项目开发过程中的学习记录

  9. Codeforces Round #198 (Div. 2)C,D题解

    接着是C,D的题解 C. Tourist Problem Iahub is a big fan of tourists. He wants to become a tourist himself, s ...

  10. Hadoop MapReduce编程 API入门系列之多个Job迭代式MapReduce运行(十二)

    推荐 MapReduce分析明星微博数据 http://git.oschina.net/ljc520313/codeexample/tree/master/bigdata/hadoop/mapredu ...