保存到cookie时,中文和部分符号会乱码。
value要用URLEncoder.encode(value, "UTF-8")编码;取值时用URLDecoder.decode(cookie.getValue(), "UTF-8")解码
Cookie工具类
package orglizyuu.util;
import java.net.URLEncoder;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Cookie工具类
*
*/
public class CookieUtil {
private CookieUtil() {
}
/**
* 添加cookie
*
* @param response
* @param name
* @param value
* @param maxAge
*/
public static void addCookie(HttpServletRequest request ,HttpServletResponse response, String name, String value, int maxAge) {
try {
Cookie cookie = getCookieByName(request, name);
if(cookie == null) {
cookie = new Cookie(name, URLEncoder.encode(value, "UTF-8"));
}
cookie.setPath("/");//设置作用域
if (maxAge > 0) {
cookie.setMaxAge(maxAge);//设置cookie存活时间,eg:记住3天--60*60*24*3
}
response.addCookie(cookie);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 删除cookie
*
* @param response
* @param name
*/
public static void removeCookie(HttpServletResponse response, String name) {
Cookie uid = new Cookie(name, null);
uid.setPath("/");
uid.setMaxAge(0);
response.addCookie(uid);
}
/**
* 获取cookie值
*
* @param request
* @return
*/
public static Cookie getCookieByName(HttpServletRequest request,String cookieName) {
Cookie cookies[] = request.getCookies();
if(cookies==null){
return null;
}
for (Cookie cookie : cookies) {
if (cookie.getName().equals(cookieName)) {
return cookie;
}
}
return null;
}
}