ServletRequest中的会话变量

我需要通过filter访问会话变量。 我甚至不知道是否有可能。 在实践中,问题是来自javax.Servlet.Filter实现的doFilter方法类型是ServletRequest ,而HttpServletinheritance了类,doPost方法参数request是HttpServletRequest。

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

谢谢!

只需将获得的ServletRequestHttpServletRequest

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

也可以看看:

  • 我们的servletfilter维基页面

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