zoukankan      html  css  js  c++  java
  • 关于Cookie的 工具类

    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;

        }

    }

  • 相关阅读:
    MyBatis的动态SQL详解
    Mybatis实现Mapper动态代理方式
    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
    springmvc前台向后台传值几种方式从简单到复杂
    Maven 项目无法在Ecplise加进tomcat server
    解决-Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable and mvn script match.
    tomcat启动startup.bat一闪而过
    用Eclipse创建一个Maven Web项目
    使用Yeoman搭建 AngularJS 应用 (8) —— 让我们搭建一个网页应用
    使用Yeoman搭建 AngularJS 应用 (7) —— 让我们搭建一个网页应用
  • 原文地址:https://www.cnblogs.com/zwjcom/p/6061815.html
Copyright © 2011-2022 走看看