Java學習---Cookie工具

來源:互聯網
上載者:User

標籤:als   ret   cat   catch   tst   toolbar   tool   false   final   

CookieUtils.java

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 {            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學習---Cookie工具

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.