CookieUtils

整合了常用的一些对Cookie的相关操作:

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

Web 开发工具类(1): CookieUtils的更多相关文章

  1. web开发工具类

    1.日期工具类 import java.text.SimpleDateFormat; import java.util.Date; public class DateUtil { public sta ...

  2. Web 开发工具类(5) | DateUtils

    日期工具类 import java.text.ParseException; import java.text.ParsePosition; import java.text.SimpleDateFo ...

  3. Web 开发工具类(2): HttpClientUtils

    HttpClientUtils 整合了一些 web开发中常用的httpClient操作: package com.evan.common.utils; import java.io.IOExcepti ...

  4. Web 开发工具类(4): IDUtils

    package com.easybuy.utils; import java.util.Random; /** * * <p>Title: IDUtils</p> * < ...

  5. Web 开发工具类(3): JsonUtils

    JsonUtils 整合了一些对Json的相关操作: package com.evan.common.utils; import java.util.List; import com.fasterxm ...

  6. 超全的web开发工具和资源

    首页 新闻 产品 地图 动态 城市 帮助 论坛 关于 登录 注册 · 不忘初心,继续前进,环境云V2接口正式上线 · 环境云测点地图全新改版 · 祝福各位环境云用户中秋快乐!   平台信息 培训互动 ...

  7. 干货100+ 最超全的web开发工具和资源大集合

    干货100+ 最超全的web开发工具和资源大集合   作为Web开发者,这是好的时代,也是坏的时代.Web开发技术也在不断变化.虽然很令人兴奋,但是这也意味着Web开发人员需要要积极主动的学习新技术和 ...

  8. Java开发工具类集合

    Java开发工具类集合 01.MD5加密工具类 import java.security.MessageDigest; import java.security.NoSuchAlgorithmExce ...

  9. Firefox上Web开发工具库一览

    Firefox的目标之一就是尽可能地使web开发者的生活更简单高效,并通过提供工具和具有很强扩展性的浏览器使人们创造出神奇的东西.使web开发者使用Firefox的时候,浏览器可以提供大量开发工具和选 ...

随机推荐

  1. salesforce零基础学习(九十五)lightning out

    随着salesforce对lightning的推进,越来越多的项目基于lightning开发,导致很多小伙伴可能都并不了解classic或者认为不需要用到classic直接就开始了lightning的 ...

  2. DRF 06

    目录 视图家族 views视图类 mixin视图工具类 generics工具视图类 viewsets视图集 路由配置 视图家族 views视图类 APIView """ ...

  3. Serverless 实战 —— Funcraft + OSS + ROS 进行 CI/CD

    前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute):函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传.函数计算准 ...

  4. Java锁对象和条件对象的使用

    锁对象 临界区:临界区是一个特殊的代码段,该代码段访问某种特殊的公共资源,该资源同一时间只允许一个线程使用. Java中可以使用锁对象创造一个临界区: myLock.lock(); try { 关键代 ...

  5. 【一起学源码-微服务】Ribbon 源码二:通过Debug找出Ribbon初始化流程及ILoadBalancer原理分析

    前言 前情回顾 上一讲讲了Ribbon的基础知识,通过一个简单的demo看了下Ribbon的负载均衡,我们在RestTemplate上加了@LoadBalanced注解后,就能够自动的负载均衡了. 本 ...

  6. ASP.NET Core Web程序托管到Windows 服务

    前言 在 .NET Core 3.1和WorkerServices构建Windows服务 我们也看到了,如何将workerservices构建成服务,那么本篇文章我们再来看看如何将web应用程序托管到 ...

  7. OpenStack Identity API v3

    Table Of Contents OpenStack Identity API v3 What’s New in Version 3.7 What’s New in Version 3.6 What ...

  8. 【转】在NetBeans上搭建Android SDK环境

    本文将介绍在NetBeans 6.8上搭建Android SDK环境,目前Android在Netbeans上进行开发需要借助nbandroid的平台插件. 我们刚刚介绍过<MyEclipse上搭 ...

  9. 【转】常见Java面试题 – 第四部分:迭代(iteration)和递归(recursion)

    ImportNew注: 本文是ImportNew编译整理的Java面试题系列文章之一.你可以从这里查看全部的Java面试系列. Q.请写一段代码来计算给定文本内字符“A”的个数.分别用迭代和递归两种方 ...

  10. 函数组合的 N 种模式

    随着以函数即服务(Function as a Service)为代表的无服务器计算(Serverless)的广泛使用,很多用户遇到了涉及多个函数的场景,需要组合多个函数来共同完成一个业务目标,这正是微 ...