我試圖讓一個過濾器,以阻止誰沒有在訪問某些pages.For登錄的用戶頁面這個我犯了一個過濾器類有以下doFilter
方法Java過濾器重定向誰沒有登錄用戶登錄
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
String url = request.getRequestURI();
boolean allowedRequest = false;
System.out.println(url);
if(urlList.contains(url)) {
allowedRequest = true;
System.out.println("in list");
}
if (!allowedRequest) {
Object o = request.getSession().getAttribute("UserInfo");
if (null == o) {
System.out.println("Hey i am in");
response.sendRedirect("/login.jsp");
}
}
chain.doFilter(req, res);
} // end of doFilter
要允許我在init建立一個ArrayList的URL列表()
現在一個很奇怪的愚蠢的事情是發生在登錄其不列入需要用戶的頁面。假設我有兩個頁面home.jsp和dcr.jsp。當我嘗試訪問home.jsp而無需登錄,我成功重定向到login.jsp,但是當我試圖訪問dcr.jsp時,雖然它進入循環,但如果(空== o)我不能重定向因爲我得到這條線在console.THis打印的是,我在服務器 得到的輸出。這是我在服務器
/dcrmaintenance.jsp
Hey i am in
告訴我,空== o視爲真正得到的輸出。
頁面dcr.jsp訪問一個會話對象,因爲用戶沒有登錄它得到java.lang.NullPointerException異常,但我不明白爲什麼即使進入循環後重定向不發生。如果某人可以找出我犯了一個錯誤,這將不勝感激。
我沒有任何其他的濾波器。其他的解決辦法worked.But我會檢查出來我怎麼可以使用安全約束!謝謝。 – Shamik 2012-04-19 10:43:27