步驟
1.寫一個filter類實現Filter接口並重寫裏面的方法
package com.ujiuye.filter;
import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
//轉成原始的requst和response對象,用來拿到session
HttpServletRequest req = (HttpServletRequest)servletRequest;
HttpServletResponse resp = (HttpServletResponse)servletResponse;
HttpSession session = req.getSession();
//從session中取登陸用戶的信息
Object loginUser = session.getAttribute("loginUser");
String requestURL = req.getRequestURI();//取訪問路徑
//登陸成功會再session中存入loginUser對象的信息,所以如果爲空表示登陸失敗,除去login.jsp登陸頁面,靜態資源,驗證碼的顯示
if(loginUser != null || requestURL.contains("login")||requestURL.contains("static")||requestURL.contains("code")){
filterChain.doFilter(req,resp); //表示放行
}else{
resp.sendRedirect(req.getContextPath()+"/login.jsp"); //重定向到登陸頁面
}
}
@Override
public void destroy() {
}
}
2.在web.xml裏面配置一下
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>實現Filter接口的類的全類名</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
(補充)防止頁面回退
window.history.forward(1)
表示該頁面只能前進不能回退