1:存储请求响应实体类,2 和 3 使用一种就好了
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 全局设置请求响应实体类 */ public class HttpHeadHolder { private static final ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<>(); private static final ThreadLocal<HttpServletResponse> responseHolder = new ThreadLocal<>(); public static void setrequest(HttpServletRequest request) { requestHolder.set(request); } public static void setresponse(HttpServletResponse response) { responseHolder.set(response); } public static HttpServletResponse getresponse() { return responseHolder.get(); } public static HttpServletRequest getrequest() { return requestHolder.get(); } public static void clear() { requestHolder.remove(); responseHolder.remove(); } }
2:使用拦截器
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 拦截器处理全局请求头 */ @Configuration public class HttpRequestInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { HttpHeadHolder.setrequest(request); HttpHeadHolder.setresponse(response); return true; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { HttpHeadHolder.clear(); } }
3.使用过滤器
import org.springframework.context.annotation.Configuration; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 过滤器设置全局请求头 */ @Configuration public class HttpRequestFilter implements Filter { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException,IOException{ HttpServletRequest httpRequest = (HttpServletRequest) request; HttpServletResponse httpResponse = (HttpServletResponse) response; HttpHeadHolder.setrequest(httpRequest); HttpHeadHolder.setresponse(httpResponse); // 获取请求的地址 String requestURI = httpRequest.getRequestURI(); // 继续执行过滤器链 chain.doFilter(request, response); HttpHeadHolder.clear(); } }