2016-03-28 21 views
2

我有一個目前正在爲內部工作工具構建的網頁。它是一個示例網站,允許用戶登錄並執行數據庫中的查詢。我剛剛實施了一個過濾器,將未登錄的用戶重定向到登錄頁面。該功能的doFilter像這樣對查詢字符串進行Java JSP篩選

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
    throws IOException, ServletException { 

    HttpServletRequest request = (HttpServletRequest) req; 
    HttpServletResponse response = (HttpServletResponse) res; 
    HttpSession session = request.getSession(false); 

    if (session == null || session.getAttribute("user") == null) { 
     // No logged-in user found, so redirect to login page. 
     response.sendRedirect(request.getContextPath() + "/Login.jsp"); 
    } else { 
     // Logged-in user found, so just continue request. 
     chain.doFilter(req, res); 
    } 
} 

在我的web.xml我有

<filter> 
<filter-name>loginFilter</filter-name> 
<filter-class>Servlets.LoginFilter</filter-class> 
</filter> 
<filter-mapping> 
<filter-name>loginFilter</filter-name> 
<url-pattern>/Home.jsp</url-pattern> 
</filter-mapping> 

如果我訪問回到Home.jsp直接將重新定向到登錄頁面。但是,一旦登錄,用戶將移動到Home.jsp頁面,該頁面允許用戶對數據庫執行查詢。家庭URL看起來像

http://localhost:8084/LiveTrades/Home.jsp

但是,一旦他們提供輸入時,它會移動到顯示與URL字符串的結果了新的一頁像

http://localhost:8084/LiveTrades/Request?BIC=cat(假設用戶輸入「貓」的輸入'BIC'字段)。

如果用戶在沒有登錄時直接輸入上面的url,它不會處理的時候會處理正常。我知道這是因爲我的過濾器只是從Home.jsp頁面調用。我該如何解決這個問題,以防止帶有請求*的頁面被過濾?

讓另一個jsp頁面比較容易一些,例如Results.jsp,並讓處理來自數據庫的信息的Servlet將數據傳遞給Results.jsp?然後,我可以簡單地將Results.jsp添加到web.xml中。

回答

0

我設法通過重構我的網頁來解決這個問題。結果現在通過JSP頁面顯示,數據從Servlet傳遞到JSP頁面。現在在我的過濾器中,我只需添加Result JSP頁面並解決問題。