专业编程基础技术教程

网站首页 > 基础教程 正文

JAVA过滤器Filter过滤掉css,js,图片文件的解决方法

ccvgpt 2024-07-28 12:32:27 基础教程 13 ℃

在加入过滤器时,会出现网页可以加载,但是网页中的js,css等文件无法加载的问题。

因为在网页加载时,先将整个网页加载,然后加载网页中的js,css等文件,而在进行js,css文件加载时,会被过滤器过滤掉。

JAVA过滤器Filter过滤掉css,js,图片文件的解决方法

因此在过滤器中加入一个对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);
 }
 }

Tags:

最近发表
标签列表