过滤递归运行

时间:2012-05-23 15:00:40

标签: servlets servlet-filters

我编写了一个servlet过滤器,它以递归方式运行。

我希望在会话中控制登录页面未设置特定属性。

实际上登录页面与其他页面具有相同的url-pattern

<filter>
        <filter-name>AppFilter</filter-name>
        <filter-class>web.AppFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>AppFilter</filter-name>
        <url-pattern>/faces/*</url-pattern>
    </filter-mapping>
</filter>

请告诉我一个解决方案,其中doFilter不应该以递归方式运行。

1 个答案:

答案 0 :(得分:0)

如果请求URI与登录页面本身匹配,只需检入过滤器,以便不会重定向。

String loginURI = request.getContextPath() + "/faces/login.xhtml";

if (user != null || request.getRequestURI().equals(loginURI)) {
    chain.doFilter(request, response);
}
else {
    response.sendRedirect(loginURI);
}