Filter配置:
demo1
cn.leader.web.filter.FilterDemo1
demo1
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
@WebFilter("/*")
public class LoginFilter implements Filter {
public void init(FilterConfig config) throws ServletException {
}
public void destroy() {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException, IOException {
//类型强制转换 接口不提供具体方法
HttpServletRequest req = (HttpServletRequest)request;
//获取资源请求路径
String uri = req.getRequestURI();
//System.out.println(uri);
//判断资源请求路径中是否包含登录相关用户资源
if (uri.contains("/managerLogin.jsp") || uri.contains("/loginServlet") || uri.contains("/css/") || uri.contains("/js/") || uri.contains("/fonts") || uri.contains("/verifyCodeImg")){
//包含说明用户要访问登录页面 直接放行
chain.doFilter(request,response);
}else {
//不包含则判断是否登录
//从session中获取user
Object user = req.getSession().getAttribute("lUser");
if (user != null){
//不等于空则放行
chain.doFilter(request, response);
}else {
//等于空代表没有user对象 没有登录 跳转登陆页面
req.setAttribute("login_msg","宁尚未登录,请先登录");
req.getRequestDispatcher("/managerLogin.jsp").forward(req,response);
}
}
}
}
注意变量名是否与servlet中一致,否则会出现登录不上的问题
暑期编程PK赛 得CSDN机械键盘等精美礼品!


