我需要通过过滤器访问会话变量。我什至不知道这是否可能。在实践中,问题是实现的doFilter
方法类型javax.Servlet.Filter
是ServletRequest
,而 HttpServlet 继承类,doPost 方法参数request
是 HttpServletRequest。
- 我可以在过滤器中访问 ServletRequest 中的会话吗?
- 我应该这样做吗?
- 你能给我推荐什么?
谢谢!
我需要通过过滤器访问会话变量。我什至不知道这是否可能。在实践中,问题是实现的doFilter
方法类型javax.Servlet.Filter
是ServletRequest
,而 HttpServlet 继承类,doPost 方法参数request
是 HttpServletRequest。
谢谢!
只需将获得的内容投射ServletRequest
到HttpServletRequest
.
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpSession session = request.getSession(false);
// ...
}
你当然可以。ServletRequest
允许您访问包含属性的会话。您可以在过滤器、servlet、jsp、会话侦听器中随时查看、添加、删除和修改属性。这种技术非常有用,尤其适用于同一会话中不同组件之间的通信。