當用戶訪問網站頁面時,系統會檢測用戶是否是合法登錄用戶,沒登錄的用戶會被轉跳到登錄頁面或者返回登錄提示信息,反之用戶可以正常訪問
具體思路如下:
利用filter 過濾所有用戶的請求,用戶的請求url爲登錄或註冊頁面則視爲正常訪問,當用戶登錄時爲當前用戶創建session,將用戶名保存在session裏面,當用戶訪問路徑爲網站頁面時檢查當前用戶session 是否存在,如果session爲空,則說明用戶沒有登錄,將當前網頁重定向到登錄頁面
filter如果不設置過濾文件格式
(即設置pattern爲<url-pattern>/*</url-pattern>),所有的請求(包括js文件,css文件,網站上的圖片等)都將先進入到filter
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
String url = request.getRequestURI();
HttpSession session = request.getSession(true);
Object obj = session.getAttribute("userName");
//用戶的請求url爲登錄或註冊頁面則視爲正常訪問
if(url.endsWith("LoginAction.do") || url.endsWith("login.html") || url.endsWith("js") || url.endsWith("css")|| url.endsWith("gif")|| url.endsWith("jpg")){
chain.doFilter(request, response);
return;
}
//如果session爲空,則說明用戶沒有登錄,將當前網頁重定向到登錄頁面
if(null == obj || ((String) obj).length() ==0){
System.out.println(url);
//request.getRequestDispatcher("login.html").forward(request, response);
response.sendRedirect("../login.html");
System.out.println("1");
chain.doFilter(request, response);
return;
}else{
System.out.println("session is not null");
chain.doFilter(request, response);
return;
}
}
666導航網 可以自由收藏管理個人常用網址的便捷上網工具