cookie中儲存登入資訊的基本操作
阿新 • • 發佈:2019-02-05
import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import java.util.Locale; import java.util.Map; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class CookieUtil { /** * 設定cookie * @param response * @param name cookie名字 * @param value cookie值 * @param maxAge cookie生命週期 以秒為單位 * @throws UnsupportedEncodingException */ public static void addCookie(HttpServletResponse response,String name,String value,int maxAge) throws UnsupportedEncodingException{ //--格林威志時間格式化,注意,這是這個引數的格式要求。 SimpleDateFormat sdf = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss 'GMT'", Locale.US); StringBuilder builder=new StringBuilder(); builder.append(name + "=" + URLEncoder.encode(value, "UTF-8") + "; "); builder.append("Path=/; "); //設定cookies失效時間maxAge秒,注意與maxAge不可同時使用,後者當關閉瀏覽器後cookies即失效 builder.append("Expires=" + sdf.format(new Date(new Date().getTime()+maxAge*1000))); response.setHeader("Set-Cookie", builder.toString()); /*Cookie cookie = new Cookie(name,URLEncoder.encode(value, "UTF-8")); cookie.setPath("/"); //if(maxAge>0) cookie.setMaxAge(maxAge); response.addCookie(cookie); */ } /** * 根據名字獲取cookie * @param request * @param name cookie名字 * @return */ public static Cookie getCookieByName(HttpServletRequest request,String name){ Map<String,Cookie> cookieMap = ReadCookieMap(request); if(cookieMap.containsKey(name)){ Cookie cookie = (Cookie)cookieMap.get(name); return cookie; }else{ return null; } } /** * 將cookie封裝到Map裡面 * @param request * @return */ private static Map<String,Cookie> ReadCookieMap(HttpServletRequest request){ Map<String,Cookie> cookieMap = new HashMap<String,Cookie>(); Cookie[] cookies = request.getCookies(); if(null!=cookies){ for(Cookie cookie : cookies){ cookieMap.put(cookie.getName(), cookie); } } return cookieMap; } /** * 刪除cookie * @param request * @param response * @param name */ public static void delCookie(HttpServletRequest request,HttpServletResponse response,String name){ Cookie[] cookies = request.getCookies(); if (null==cookies) { System.out.println("沒有cookie=============="); } else { for(Cookie cookie : cookies){ if(cookie.getName().equals(name)){ cookie.setValue(null); cookie.setMaxAge(0);// 立即銷燬cookie cookie.setPath("/"); System.out.println("Test1被刪除的cookie名字為:"+cookie.getName()); response.addCookie(cookie); break; } } } } }