1.定义RequestAndUserHolder
package com.yinzhen.demo;
import javax.servlet.http.HttpServletRequest;
public class RequestAndUserHolder {
private static final ThreadLocal<SysUser> userHolder = new ThreadLocal<SysUser>();
private static final ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<HttpServletRequest>();
public static void addUser(SysUser sysUser) {
userHolder.set(sysUser);
}
public static void addRequest(HttpServletRequest request) {
requestHolder.set(request);
}
public static SysUser getCurrentUser() {
return userHolder.get();
}
public static HttpServletRequest getCurrentRequest() {
return requestHolder.get();
}
public static void remove() {
userHolder.remove();
requestHolder.remove();
}
}
2.在登录Filter验证登录成功把user和request对象放到ThreadLocal中
3.在拦截器中的完成方法afterCompletion把user和request对象删除
RequestAndUserHolder.remove();