zoukankan      html  css  js  c++  java
  • java CookieUtils cookie工具类

      1 package com.mohecun.common.utils;
      2 
      3 import java.io.UnsupportedEncodingException;
      4 import java.net.URLDecoder;
      5 import java.net.URLEncoder;
      6 
      7 import javax.servlet.http.Cookie;
      8 import javax.servlet.http.HttpServletRequest;
      9 import javax.servlet.http.HttpServletResponse;
     10 
     11 
     12 /**
     13  * 
     14  * Cookie 工具类
     15  *
     16  */
     17 public final class CookieUtils {
     18 
     19     /**
     20      * 得到Cookie的值, 不编码
     21      * 
     22      * @param request
     23      * @param cookieName
     24      * @return
     25      */
     26     public static String getCookieValue(HttpServletRequest request, String cookieName) {
     27         return getCookieValue(request, cookieName, false);
     28     }
     29 
     30     /**
     31      * 得到Cookie的值,
     32      * 
     33      * @param request
     34      * @param cookieName
     35      * @return
     36      */
     37     public static String getCookieValue(HttpServletRequest request, String cookieName, boolean isDecoder) {
     38         Cookie[] cookieList = request.getCookies();
     39         if (cookieList == null || cookieName == null) {
     40             return null;
     41         }
     42         String retValue = null;
     43         try {
     44             for (int i = 0; i < cookieList.length; i++) {
     45                 if (cookieList[i].getName().equals(cookieName)) {
     46                     if (isDecoder) {
     47                         retValue = URLDecoder.decode(cookieList[i].getValue(), "UTF-8");
     48                     } else {
     49                         retValue = cookieList[i].getValue();
     50                     }
     51                     break;
     52                 }
     53             }
     54         } catch (UnsupportedEncodingException e) {
     55             e.printStackTrace();
     56         }
     57         return retValue;
     58     }
     59 
     60     /**
     61      * 得到Cookie的值,
     62      * 
     63      * @param request
     64      * @param cookieName
     65      * @return
     66      */
     67     public static String getCookieValue(HttpServletRequest request, String cookieName, String encodeString) {
     68         Cookie[] cookieList = request.getCookies();
     69         if (cookieList == null || cookieName == null) {
     70             return null;
     71         }
     72         String retValue = null;
     73         try {
     74             for (int i = 0; i < cookieList.length; i++) {
     75                 if (cookieList[i].getName().equals(cookieName)) {
     76                     retValue = URLDecoder.decode(cookieList[i].getValue(), encodeString);
     77                     break;
     78                 }
     79             }
     80         } catch (UnsupportedEncodingException e) {
     81              e.printStackTrace();
     82         }
     83         return retValue;
     84     }
     85 
     86     /**
     87      * 设置Cookie的值 不设置生效时间默认浏览器关闭即失效,也不编码
     88      */
     89     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
     90             String cookieValue) {
     91         setCookie(request, response, cookieName, cookieValue, -1);
     92     }
     93 
     94     /**
     95      * 设置Cookie的值 在指定时间内生效,但不编码
     96      */
     97     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
     98             String cookieValue, int cookieMaxage) {
     99         setCookie(request, response, cookieName, cookieValue, cookieMaxage, false);
    100     }
    101 
    102     /**
    103      * 设置Cookie的值 不设置生效时间,但编码
    104      */
    105     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
    106             String cookieValue, boolean isEncode) {
    107         setCookie(request, response, cookieName, cookieValue, -1, isEncode);
    108     }
    109 
    110     /**
    111      * 设置Cookie的值 在指定时间内生效, 编码参数
    112      */
    113     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
    114             String cookieValue, int cookieMaxage, boolean isEncode) {
    115         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, isEncode);
    116     }
    117 
    118     /**
    119      * 设置Cookie的值 在指定时间内生效, 编码参数(指定编码)
    120      */
    121     public static void setCookie(HttpServletRequest request, HttpServletResponse response, String cookieName,
    122             String cookieValue, int cookieMaxage, String encodeString) {
    123         doSetCookie(request, response, cookieName, cookieValue, cookieMaxage, encodeString);
    124     }
    125 
    126     /**
    127      * 删除Cookie带cookie域名
    128      */
    129     public static void deleteCookie(HttpServletRequest request, HttpServletResponse response,
    130             String cookieName) {
    131         doSetCookie(request, response, cookieName, "", -1, false);
    132     }
    133 
    134     /**
    135      * 设置Cookie的值,并使其在指定时间内生效
    136      * 
    137      * @param cookieMaxage cookie生效的最大秒数
    138      */
    139     private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
    140             String cookieName, String cookieValue, int cookieMaxage, boolean isEncode) {
    141         try {
    142             if (cookieValue == null) {
    143                 cookieValue = "";
    144             } else if (isEncode) {
    145                 cookieValue = URLEncoder.encode(cookieValue, "utf-8");
    146             }
    147             Cookie cookie = new Cookie(cookieName, cookieValue);
    148             if (cookieMaxage > 0)
    149                 cookie.setMaxAge(cookieMaxage);
    150             if (null != request) {// 设置域名的cookie
    151                 String domainName = getDomainName(request);
    152                 System.out.println(domainName);
    153                 if (!"localhost".equals(domainName)) {
    154                     cookie.setDomain(domainName);
    155                 }
    156             }
    157             cookie.setPath("/");
    158             response.addCookie(cookie);
    159         } catch (Exception e) {
    160              e.printStackTrace();
    161         }
    162     }
    163 
    164     /**
    165      * 设置Cookie的值,并使其在指定时间内生效
    166      * 
    167      * @param cookieMaxage cookie生效的最大秒数
    168      */
    169     private static final void doSetCookie(HttpServletRequest request, HttpServletResponse response,
    170             String cookieName, String cookieValue, int cookieMaxage, String encodeString) {
    171         try {
    172             if (cookieValue == null) {
    173                 cookieValue = "";
    174             } else {
    175                 cookieValue = URLEncoder.encode(cookieValue, encodeString);
    176             }
    177             Cookie cookie = new Cookie(cookieName, cookieValue);
    178             if (cookieMaxage > 0)
    179                 cookie.setMaxAge(cookieMaxage);
    180             if (null != request) {// 设置域名的cookie
    181                 String domainName = getDomainName(request);
    182                 System.out.println(domainName);
    183                 if (!"localhost".equals(domainName)) {
    184                     cookie.setDomain(domainName);
    185                 }
    186             }
    187             cookie.setPath("/");
    188             response.addCookie(cookie);
    189         } catch (Exception e) {
    190              e.printStackTrace();
    191         }
    192     }
    193 
    194     /**
    195      * 得到cookie的域名
    196      */
    197     private static final String getDomainName(HttpServletRequest request) {
    198         String domainName = null;
    199 
    200         String serverName = request.getRequestURL().toString();
    201         if (serverName == null || serverName.equals("")) {
    202             domainName = "";
    203         } else {
    204             serverName = serverName.toLowerCase();
    205             serverName = serverName.substring(7);
    206             final int end = serverName.indexOf("/");
    207             serverName = serverName.substring(0, end);
    208             final String[] domains = serverName.split("\.");
    209             int len = domains.length;
    210             if (len > 3) {
    211                 // www.xxx.com.cn
    212                 domainName = "." + domains[len - 3] + "." + domains[len - 2] + "." + domains[len - 1];
    213             } else if (len <= 3 && len > 1) {
    214                 // xxx.com or xxx.cn
    215                 domainName = "." + domains[len - 2] + "." + domains[len - 1];
    216             } else {
    217                 domainName = serverName;
    218             }
    219         }
    220 
    221         if (domainName != null && domainName.indexOf(":") > 0) {
    222             String[] ary = domainName.split("\:");
    223             domainName = ary[0];
    224         }
    225         return domainName;
    226     }
    227 
    228 }
  • 相关阅读:
    unalias---取消命令别名
    alias---设置别名
    type---显示指定命令的类型
    logout命令用于退出当前登录的Shell
    enable&&builtin---shell内部命令
    read---读取变量值
    readonly&&declare&&unset &&export&&env环境变量
    fc---输出历史命令列表
    command---调用指定的指令并执行
    terminfo 数据库?
  • 原文地址:https://www.cnblogs.com/volatileAndCrazy/p/7843589.html
Copyright © 2011-2022 走看看