Java ServletRequest中的会话变量

Java ServletRequest中的会话变量,java,servlets,servlet-filters,Java,Servlets,Servlet Filters,我需要通过过滤器访问会话变量。我甚至不知道这是否可能。实际上,问题在于javax.Servlet.Filter实现中的doFilter方法类型是ServletRequest,而HttpServlet继承了类,doPost方法参数request是HttpServletRequest 我可以在筛选器中访问ServletRequest中的会话吗 我应该那样做吗 你能给我推荐什么吗 谢谢 当然可以ServletRequest允许您访问包含属性的会话。您可以随时在filter、servlet、jsp和会话

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

  • 我可以在筛选器中访问ServletRequest中的会话吗
  • 我应该那样做吗
  • 你能给我推荐什么吗

  • 谢谢

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

    只需将获得的数据转换为

    另见:

    HttpServletRequest-request=(HttpServletRequest)methodRequest
    您可以将doFilter请求强制转换为
    HttpServletRequest
    。没有
    getSession()
    方法。否则OP一开始就不会问这个问题。我经常把
    ServletRequest
    转换成
    HttpServletRequest
    ,所以我不想提及这一点。
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
        HttpServletRequest request = (HttpServletRequest) req;
        HttpSession session = request.getSession(false);
        // ...
    }