【Java】Filter過濾器中,在chain.doFilter(request,response)後若有重定向或轉發語句
阿新 • • 發佈:2019-02-03
在chain.doFilter(request,response)後若有重定向或轉發語句,執行順序是:
1.所要訪問的資源不是轉發的目標資源:
chain.doFilter(request,response)–>下一個過濾器(如果有)–>執行完整個 過濾器鏈–>執行重定向或轉發語句–>最後再訪問你所要訪問的資源
2..所要訪問的資源是轉發的目標資源:
chain.doFilter(request,response)–>下一個過濾器(如果有)–>執行完整個 過濾器鏈–>最後再訪問你所要訪問的資源
而在1的情況裡,重定向語句會與訪問的資源產生衝突而丟擲異常
程式碼片段
//獲取session域物件
HttpSession session = request.getSession(false);
if(session!=null) {
//若session物件不為空
if(session.getAttribute("userInfo")!=null) {
//若userInfo不為空
//說明已經登入成功,放行
arg2.doFilter(request, response);
}else {
//否則,跳轉到登入頁面
url="/User/login.jsp";
}
}else {
//否則,跳轉到登入頁面
url="/User/login.jsp";
}
request.getRequestDispatcher(url).forward(request, response);