CookieUtils.java操作cookie的工具类

package com.paic.mcp.commons.util; 
import java.io.UnsupportedEncodingException; 
import java.net.URLDecoder; 
import java.net.URLEncoder; 
import javax.servlet.http.Cookie; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 
/**
 * 
 * Cookie 工具类
 *
 */ 
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 { 
            final int end = serverName.lastIndexOf("/"); 
            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; 
    } 
 
}

猜你喜欢

转载自blog.csdn.net/tomcatandoracle/article/details/80307179