java工具类CookieUtils使用分析

本篇内容介绍了“java工具类CookieUtils使用分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

创新互联公司是专业的赤峰网站建设公司,赤峰接单;提供成都网站建设、成都网站制作,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行赤峰网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

package com.hjj.demo.commons.utils;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;

/**
 * Cookie 工具类
 * 

Title: CookieUtils

 * 

Description: 

 *  * @author hjj  * @version 1.0.0  * @date 2019/10/7 22:00  */ public final class CookieUtils {     /**      * 得到Cookie的值, 不编码      *      * @param request      * @param cookieName      * @return      */     public static String getCookieValue(HttpServletRequest request, String cookieName) {         return getCookieValue(request, cookieName, false);     }     /**      * 得到Cookie的值,      *      * @param request      * @param cookieName      * @return      */     public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {         Cookie[] cookieList = request.getCookies();         if (cookieList == null || cookieName == null) {             return null;         }         String retValue = null;         try {             for (int i = 0; i < cookieList.length; i++) {                 if (cookieList[i].getName().equals(cookieName)) {                     if (isDecoder) {                         retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");                     } else {                         retValue = cookieList[i].getValue();                     }                     break;                 }             }         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         }         return retValue;     }     /**      * 得到Cookie的值,      *      * @param request      * @param cookieName      * @return      */     public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {         Cookie[] cookieList = request.getCookies();         if (cookieList == null || cookieName == null) {             return null;         }         String retValue = null;         try {             for (int i = 0; i < cookieList.length; i++) {                 if (cookieList[i].getName().equals(cookieName)) {                     retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);                     break;                 }             }         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         }         return retValue;     }     /**      * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码      */     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,                                  String cookieValue) {         setCookie(request, response, cookieName, cookieValue, -1);     }     /**      * 设置Cookie的值 在指定时间内生效,但不编码      */     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,                                  String cookieValue, int cookieMaxage) {         setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);     }     /**      * 设置Cookie的值 不设置生效时间,但编码      */     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,                                  String cookieValue, boolean isEncode) {         setCookie(request, response, cookieName, cookieValue, -1, isEncode);     }     /**      * 设置Cookie的值 在指定时间内生效, 编码参数      */     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,                                  String cookieValue, int cookieMaxage, boolean isEncode) {         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);     }     /**      * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)      */     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,                                  String cookieValue, int cookieMaxage, String encodeString) {         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);     }     /**      * 删除Cookie带cookie域名      */     public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,                                     String cookieName) {         doSetCookie(request, response, cookieName, "", -1, false);     }     /**      * 设置Cookie的值,并使其在指定时间内生效      *      * @param cookieMaxage cookie生效的最大秒数      */     private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,                                           String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {         try {             if (cookieValue == null) {                 cookieValue = "";             } else if (isEncode) {                 cookieValue = URLEncoder.encode(cookieValue, "utf-8");             }             Cookie cookie = new Cookie(cookieName, cookieValue);             if (cookieMaxage > 0)                 cookie.setMaxAge(cookieMaxage);             if (null != request) {// 设置域名的cookie                 String domainName = getDomainName(request); //                System.out.println(domainName);                 if (!"localhost".equals(domainName)) {                     cookie.setDomain(domainName);                 }             }             cookie.setPath("/");             response.addCookie(cookie);         } catch (Exception e) {             e.printStackTrace();         }     }     /**      * 设置Cookie的值,并使其在指定时间内生效      *      * @param cookieMaxage cookie生效的最大秒数      */     private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,                                           String cookieName, String cookieValue, int cookieMaxage, String encodeString) {         try {             if (cookieValue == null) {                 cookieValue = "";             } else {                 cookieValue = URLEncoder.encode(cookieValue, encodeString);             }             Cookie cookie = new Cookie(cookieName, cookieValue);             if (cookieMaxage > 0)                 cookie.setMaxAge(cookieMaxage);             if (null != request) {// 设置域名的cookie                 String domainName = getDomainName(request); //                System.out.println(domainName);                 if (!"localhost".equals(domainName)) {                     cookie.setDomain(domainName);                 }             }             cookie.setPath("/");             response.addCookie(cookie);         } catch (Exception e) {             e.printStackTrace();         }     }     /**      * 得到cookie的域名      */     private static final String getDomainName(HttpServletRequest request) {         String domainName = null;         String serverName = request.getRequestURL().toString();         if (serverName == null || serverName.equals("")) {             domainName = "";         } else {             serverName = serverName.toLowerCase();             serverName = serverName.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 != null && domainName.indexOf(":") > 0) {             String[] ary = domainName.split("\\:");             domainName = ary[0];         }         return domainName;     } }

“java工具类CookieUtils使用分析”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!


分享文章:java工具类CookieUtils使用分析
文章链接:http://scyanting.com/article/jdpjsd.html