15

我需要通过过滤器访问会话变量。我什至不知道这是否可能。在实践中,问题是实现的doFilter方法类型javax.Servlet.FilterServletRequest,而 HttpServlet 继承类,doPost 方法参数request是 HttpServletRequest。

  1. 我可以在过滤器中访问 ServletRequest 中的会话吗?
  2. 我应该这样做吗?
  3. 你能给我推荐什么?

谢谢!

4

2 回答 2

29

只需将获得的内容投射ServletRequestHttpServletRequest.

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
    HttpServletRequest request = (HttpServletRequest) req;
    HttpSession session = request.getSession(false);
    // ...
}

也可以看看:

于 2013-02-21T18:42:55.253 回答
0

你当然可以。ServletRequest允许您访问包含属性的会话。您可以在过滤器、servlet、jsp、会话侦听器中随时查看、添加、删除和修改属性。这种技术非常有用,尤其适用于同一会话中不同组件之间的通信。

于 2013-02-21T18:41:42.383 回答