0
當我爲所有jsp頁面創建過濾器時,瀏覽器進入無限循環,但是當我僅對一個頁面進行過濾時,它將正確運行!爲jsp文件使用過濾器時產生無限循環
這裏是doFilter方法,如果有一個人找到錯誤PLX告訴我...
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
if (debug) log("AuthenticationFilter:doFilter()");
response.setContentType("text/html");
PrintWriter out = response.getWriter();
HttpServletResponse httpres = (HttpServletResponse) response;
HttpServletRequest httpreq = (HttpServletRequest) request;
if (httpreq.getRequestURI().indexOf("login.jsp") == -1 || httpreq.getRequestURI().indexOf("LoginServlet") == -1) {
// if(!httpreq.getRequestURL().equals("/OSQS/Login.jsp")){
HttpSession session = httpreq.getSession();
String logged = (String) session.getAttribute("login");
if (logged == null) {
httpres.sendRedirect("login.jsp");
return;
}
}
chain.doFilter(request, response);
}
thanx它的工作瀏覽器沒有進入無限循環,並顯示登錄頁面,但是當我在URL中更改爲private/secure.jsp它進入無限循環:(並沒有重定向到登錄頁面!!爲什麼? – palAlaa 2010-09-04 23:46:05
可能你還有一個安全文件夾的登錄頁面嗎?你是否將sendRedirect(「login.jsp」)更改爲'sendRedirect(「/ login.jsp」)'? – BalusC 2010-09-04 23:48:47
我發現的問題是,如果他沒有登錄???我不知道爲什麼,因爲我確保從數據庫連接,然後使session.setAttribute(「登錄」,「確定」)後,在servlet中獲得會話形式的http請求;我在過濾器檢查,這裏: 字符串記錄=(字符串)session.getAttribute(「登錄」); 但我震驚,用戶得到會話屬性登錄=確定,但他沒有登錄!!!!!!!! !!!!!!!!!!!!! – palAlaa 2010-09-05 00:13:24