onceperrequestfilter中获取session失败
时间: 2023-09-25 15:13:11 浏览: 50
如果你在 `OncePerRequestFilter` 中获取 session 失败,可能是因为该过滤器在请求处理链的某些阶段之前被调用,导致 session 还未被创建。你可以尝试在过滤器中重写 `doFilterInternal` 方法,并在其中使用 `HttpServletRequestWrapper` 对象来获取 session。具体操作如下:
```java
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
HttpServletRequestWrapper requestWrapper = new HttpServletRequestWrapper(request);
HttpSession session = requestWrapper.getSession(false); // 如果 session 不存在,则返回 null
if (session != null) {
// TODO: 处理 session
}
filterChain.doFilter(request, response);
}
```
请注意,`getSession(false)` 方法的参数为 `false`,表示如果 session 不存在,则返回 `null`,而不会创建新的 session。如果你需要在过滤器中创建新的 session,可以使用 `getSession(true)` 方法。