2012-05-23 56 views
0

我已經寫了一個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不應遞歸運行的解決方案。

回答

0

只要檢查過濾器是否請求URI與登錄頁面本身相匹配,以便它不會被重定向。

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

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