如何在普通类获取Request和response

在很多时候,我们想要在一个普通类上面获取到request和response对象,这时候我们就要用到本地线程了

先创建一个本地线程线程,然后提供get和set方法。这时候我们就可以利用拦截器来把request和response对象存储到本地线程里面去了,只要存储好之后在任何地方都能获取到这个本地线程。

废话不多说,直接上代码。

  1. 创建本地线程

package com.yxun8.utils;

import javax.servlet.http.HttpServletRequest;

/**
* 创建本地线程
*/
public class RequestUtil {
   private static ThreadLocal<HttpServletRequest> local = new ThreadLocal();

   public static HttpServletRequest getLocal() {
       return local.get();
  }

   public static void setLocal(HttpServletRequest request){
       local.set(request);
  }

}

 

  1. 本地线程创建好了之后利用拦截器获取到request和response量大对象,再把它们存储进去

package com.yxun8.interceptor;

import com.yxun8.utils.RequestUtil;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class MyInterceptor implements HandlerInterceptor {

   @Override
   public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       RequestUtil.setLocal(request);   //把request存到本地线程
       return true;
  }
}
  1. 在任意普通类把存储好的对象取出来

public class SystemAspect {
   public void log(){
     
       //把本地线程取出来
       HttpServletRequest request = RequestUtil.getLocal();
       
  }
}

 

posted @ 2020-09-07 18:10  UnXun  阅读(390)  评论(0)    收藏  举报