我有一個目前正在爲內部工作工具構建的網頁。它是一個示例網站,允許用戶登錄並執行數據庫中的查詢。我剛剛實施了一個過濾器,將未登錄的用戶重定向到登錄頁面。該功能的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中。