步骤
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)
表示该页面只能前进不能回退