访问登陆页面时,css等样式资源也被拦截了,就看不到样式了。而且需要登陆也需要注册,在此处,样式资源和注册页面都应该放行。所以需要判断访问的路径是否和登录、注册相关,如果是放行图片,即:"/img/"。放行css:"/css/"。
HttpServletRequest req = (HttpServletRequest) servletRequest;
//判断访问的路径是否和登录、注册相关
String[] urls = {"/login.jsp","/loginServlet","register.jsp","/registerServlet"};
//获取当前访问的资源路径
String url = req.getRequestURL().toString();
//循环判断
for (String u : urls) {
if (url.contains(u)){
//证明找到了,需要放行,后面的代码都不执行了,需要return
filterChain.doFilter(servletRequest, servletResponse);
return;
}
}
// 判断session中是否有user
HttpSession session = req.getSession();
Object user = session.getAttribute("user");
// 判断user是否为null
if(user != null){
//登录过了,放行
System.out.println("ffffff");
filterChain.doFilter(servletRequest, servletResponse);
}else {
//没有登陆,存储提示信息,跳转到登陆页面
req.setAttribute("login_msg","您尚未登陆");
req.getRequestDispatcher("/login.jsp").forward(req,servletResponse);
}
}