2012-12-16 85 views
0

我在java web中有AccessFilter問題。當我調用/main.jspx時,它將重定向到login.jsp。但是,當我試圖登錄某些錯誤出現會話過濾器重定向問題

public class AccessFilter implements Filter { 

    private FilterConfig filterConfig; 

    @Override 
    public void init(FilterConfig filterConfig) throws ServletException { 
     this.filterConfig = filterConfig; 
    } 

    @Override 
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
     HttpSession session = ((HttpServletRequest) request).getSession(); 
     HttpServletResponse res = (HttpServletResponse) response; 
     Client client = (Client) session.getAttribute("client");   
     if (client != null) { 
      chain.doFilter(request, response); 
     } else { 
      RequestDispatcher dispatcher = request.getRequestDispatcher(
        ConfigurationManager.getInstance().getProperty(ConfigurationManager.LOGIN_PAGE_PATH)); 
      dispatcher.forward(request, response); 
     } 
    } 

    @Override 
    public void destroy() { 
     this.filterConfig = null; 
    } 

} 

的web.xml:

<filter> 
    <filter-name>AccessFilter</filter-name> 
    <filter-class>ua.kpi.shop.filter.AccessFilter</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>AccessFilter</filter-name> 
    <url-pattern>/jsp/main.jspx</url-pattern> 
    <url-pattern>/jsp/pokemons.jspx</url-pattern> 
</filter-mapping> 

錯誤: HTTP狀態404 - /PokemonsShop/login.jspx

類型的現狀報告

消息/ PokemonsShop/login.jspx

description請求的資源不可用。

+0

通常情況下,在您的服務器輸出中,您將具有未找到文件的完整本地路徑,您將能夠找到我確定存在的問題。 –

回答

0

filterConfig.getServletContext().getRequestDispatcher取絕對路徑而不是request-getRequestDispatcher。雖然這是否是我不能說的解決方案。

+0

這沒有幫助 – Proof

0

當看到您的消息時,有兩件事進入我的腦海: 1)您是否檢查客戶端對象是否爲空?在執行登錄操作(方法)時,您可能沒有正確設置客戶端進入會話嗎? 2)在服務器錯誤,它說「找不到/PokemonsShop/login.jspx」,但在你的過濾器映射你提到/ jsp/xxx。是因爲您的登錄頁面位於jsp文件夾下,而且您正在重定向到/PokemonsShop/login.jspx,該應用程序應位於webapp根文件夾下以便可訪問。 希望他們中的一個能夠幫助