通过ThreadLocal获取HttpServletRequest对象。代码示例
时间: 2024-03-15 09:19:22 浏览: 85
HttpServletRequest对象
以下是一个获取HttpServletRequest对象的示例代码:
```java
public class RequestUtil {
private static ThreadLocal<HttpServletRequest> requestHolder = new ThreadLocal<>();
public static void setRequest(HttpServletRequest request) {
requestHolder.set(request);
}
public static HttpServletRequest getRequest() {
return requestHolder.get();
}
public static void removeRequest() {
requestHolder.remove();
}
}
```
在这个示例中,我们使用一个静态的ThreadLocal对象requestHolder来存储HttpServletRequest对象,通过setRequest方法将HttpServletRequest对象存入ThreadLocal中,通过getRequest方法获取HttpServletRequest对象,通过removeRequest方法移除ThreadLocal中的HttpServletRequest对象。
在Web应用中,可以在过滤器Filter中调用setRequest方法,将HttpServletRequest对象存入ThreadLocal中,在Controller中调用getRequest方法获取HttpServletRequest对象,以此来避免在多线程环境下出现HttpServletRequest对象被多个线程共享的问题。
阅读全文