我需要通过过滤器访问会话变量。我甚至不知道是否有可能。实际上,问题是来自doFilter
实现的javax.Servlet.Filter
方法类型是ServletRequest
,而HttpServlet继承了类,doPost方法参数request
是HttpServletRequest。
谢谢!
答案 0 :(得分:24)
只需将获得的ServletRequest
投射到HttpServletRequest
。
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(false);
// ...
}
答案 1 :(得分:0)
当然可以。 ServletRequest
允许您访问包含属性的会话。您可以在filter,servlet,jsp,session listener中随时查看,添加,删除和修改属性。这种技术非常有用,尤其适用于同一会话中不同组件之间的通信。