• Utils--Cookie工具类


               Utils--Cookie工具类

    package com.taotao.manage.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;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    /**
     * 
     * Cookie 工具类
     *
     */
    public final class CookieUtils {
    
    	protected static final Logger logger = LoggerFactory.getLogger(CookieUtils.class);
    
    	/**
    	 * 得到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) {
    			logger.error("Cookie Decode Error.", e);
    		}
    		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) {
    			logger.error("Cookie Decode Error.", e);
    		}
    		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
    				cookie.setDomain(getDomainName(request));
    			cookie.setPath("/");
    			response.addCookie(cookie);
    		} catch (Exception e) {
    			logger.error("Cookie Encode Error.", e);
    		}
    	}
    
    	/**
    	 * 设置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
    				cookie.setDomain(getDomainName(request));
    			cookie.setPath("/");
    			response.addCookie(cookie);
    		} catch (Exception e) {
    			logger.error("Cookie Encode Error.", e);
    		}
    	}
    
    	/**
    	 * 得到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;
    	}
    
    }
    

      

  • 相关阅读:
    11g 配置 dgmgrl 以及报错 DataGuard ORA-00313,
    java三种匿名的方式开启线程
    java 四种方式实现字符流文件的拷贝对比
    java中过滤查询文件
    通过Java实现斗地主
    java中Map的entrySet 和keySet的使用
    python3列表推导式和生成器。
    python的特殊方法总结
    python3 定义向量运算
    python3模拟扑克牌
  • 原文地址:https://www.cnblogs.com/meiLinYa/p/9149208.html
Copyright © 2020-2023  润新知