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;
}
}
}
}
}
cookie中存储登录信息的基本操作
最新推荐文章于 2024-08-19 17:52:44 发布