由于在网页加载时,先将全体网页加载,然后加载网页中的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); } }