在加入过滤器时,会出现网页可以加载,但是网页中的js,css等文件无法加载的问题。
因为在网页加载时,先将整个网页加载,然后加载网页中的js,css等文件,而在进行js,css文件加载时,会被过滤器过滤掉。
因此在过滤器中加入一个对css,js等文件的判断,就可以解决此问题。
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { // 0. 转换 HttpServletrequest request = (HttpServletRequest) req; HttpServletResponse response = (HttpServletResponse) res; // 1. 获取请求资源,截取 String uri = request.getRequestURI(); // 截取 【login.jsp或login】 String requestPath = uri.substring(uri.lastIndexOf("/") 1, uri.length()); if (uri.contains(".css") || uri.contains(".js") || uri.contains(".png") || uri.contains(".jpg")) { // 如果发现是css或者js文件,直接放行 chain.doFilter(request, response); return; } // 2. 判断: 先放行一些资源:/login.jsp、/login if ("Login".equals(requestPath) || "login.jsp".equals(requestPath)) { // 放行 chain.doFilter(request, response); } else { // 3. 对其他资源进行拦截 // 3.1 先获取Session、获取session中的登陆用户(loginInfo) HttpSession session = request.getSession(false); // 判断 if (session != null) { Object obj = session.getAttribute("loginfo"); // 3.2如果获取的内容不为空,说明已经登陆,放行 if (obj != null) { // 放行 chain.doFilter(request, response); } else { // 3.3如果获取的内容为空,说明没有登陆; 跳转到登陆 uri = "/login.jsp"; } } else { // 肯定没有登陆 uri = "/login.jsp"; } request.getRequestDispatcher(uri).forward(request, response); } }