方式一
@Autowired
private HttpServletRequest request;
方式二
@Override
public void onApplicationEvent(AuthenticationSuccessEvent event) {
//获取request
HttpServletRequest httpServletRequest = currentRequestAttributes().getRequest();
}
private static ServletRequestAttributes currentRequestAttributes() {
RequestAttributes requestAttr = RequestContextHolder.currentRequestAttributes();
if (!(requestAttr instanceof ServletRequestAttributes)) {
throw new IllegalStateException("Current request is not a servlet request");
}
return (ServletRequestAttributes) requestAttr;
}
简单讲: 因为springMvc中, request存在threadlocal中, 和线程绑定, 所以随时随地可取.