【问题标题】:Adding a filter to check if a session is valid or not添加过滤器以检查会话是否有效
【发布时间】:2014-12-01 04:38:19
【问题描述】:

我正在添加一个过滤器来检查会话是否有效。

添加了以下但得到错误

public void doFilter(ServletRequest request, ServletResponse response,
        FilterChain chain) throws java.io.IOException, ServletException {

    if (request.getRequestedSessionId() != null
            && !request.isRequestedSessionIdValid()) {

错误:-

The method getRequestedSessionId() is undefined for the type ServletRequest

【问题讨论】:

    标签: java spring servlets


    【解决方案1】:

    方法getRequestedSessionId(和isRequestedSessionIdValid)在HttpServletRequest interface 上声明。您正在尝试在 ServletRequest 类型的引用上调用该方法。如果您知道引用的对象确实是 HttpServletRequest,请将其强制转换以调用该方法。

    HttpServletRequest httpRequest = (HttpServletRequest) request;
    if (httpRequest.getRequestedSessionId() != null && !httpRequest.isRequestedSessionIdValid()) {...
    

    【讨论】:

    • 谢谢,它成功了。有一个问题 - 当它被转换时,我确信它会将 ServletRequest 的所有属性复制到 HttpServletRequest。如果 ServletRequest 中有更多属性会发生什么,反之亦然?
    • @user1050619 转换对对象没有任何作用。强制转换适用于值,这里的值是对对象的引用。对象完全相同。您只是以不同的方式看待它,因为类型为 HttpServletRequest 而不是 ServletRequest
    猜你喜欢
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 2019-08-02
    相关资源
    最近更新 更多