之前专门写过有关cookie的文章,所以说这里就不在此多做介绍,直接上源码:
package com.lyc.cookie.util;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Slf4j
public class CookieUtil {
private final static String COOKIE_DOMAIN = ".lyc.com";
private final static String COOKIE_NAME = "lyc_login_token";
/**
* 读取cookie
* @param request
* @return
*/
public static String readLoginToken(HttpServletRequest request){
Cookie[] cks = request.getCookies();
if(cks != null){
for (Cookie ck : cks){
log.info("cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
if(StringUtils.equals(ck.getName(),COOKIE_NAME)){
log.info("return cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
return ck.getValue();
}
}
}
return null;
}
/**
* 写入cookie
* @param response
* @param token
*/
public static void writeLoginToken(HttpServletResponse response,String token){
Cookie ck = new Cookie(COOKIE_NAME,token);
ck.setDomain(COOKIE_DOMAIN);
//代表设置在根目录
ck.setPath("/");
//下面的则是防止脚本攻击所带来的信息攻击风险
ck.setHttpOnly(true);
//单位是秒,如果是-1,则代表永久有效。
// 如果这个maxAge不设置的话,cookie就不会写入硬盘,而是会写入内存。
// 只在当前页面有效。
ck.setMaxAge(60 * 60 * 24 * 365);
log.info("write cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
response.addCookie(ck);
}
/**
* 删除cookie
* @param request
* @param response
*/
public static void delLoginToken(HttpServletRequest request,HttpServletResponse response){
Cookie[] cks = request.getCookies();
if(cks != null){
for(Cookie ck : cks){
if(StringUtils.equals(ck.getName(),COOKIE_NAME)){
ck.setDomain(COOKIE_DOMAIN);
ck.setPath("/");
ck.setMaxAge(0); //如果有效期设置为0,代表着删除该cookie
log.info("del cookieName:{},cookieValue:{}",ck.getName(),ck.getValue());
response.addCookie(ck);
return;
}
}
}
}
}
源码:cookie-util