【问题标题】:Session variables in ServletRequestServletRequest 中的会话变量
【发布时间】:2013-02-07 05:18:26
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • HttpServletRequest request = (HttpServletRequest) methodRequest; 您可以将 doFilter 请求转换为 HttpServletRequest

标签: java servlets servlet-filters


【解决方案1】:

只需将获得的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 转换为HttpServletRequest 以至于忘记提及这一点。
【解决方案2】:

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

【讨论】:

猜你喜欢
  • 2019-10-30
  • 1970-01-01
  • 1970-01-01
  • 2012-05-22
  • 2011-11-09
  • 2018-02-01
  • 2010-12-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多