JAVA中解决Filter过滤掉css,js,图片文件等问题

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        //转换类型
        HttpServletRequest req=(HttpServletRequest) request; 
        HttpServletResponse res=(HttpServletResponse) response;    
        //获取请求界面的路径
        String a=req.getRequestURI();
        if(a.contains(".css") || a.contains(".js") || a.contains(".png")|| a.contains(".jpg")){
            //如果发现是css或者js文件,直接放行
               chain.doFilter(request, response);
            }
         //在else中放对网页过滤的代码
        else{}    }

 

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

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

因此在过滤器中加入一个对css,js等文件的判断,就可以解决此问题。

 
 

转载于:https://www.cnblogs.com/ermeng/p/6440966.html

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你想要在HTML使用的CSSJS等静态文件能够被正常加载,可以通过配置服务器的过滤器(Filter)来实现。以下是一个示例: 1. 创建一个实现了 `javax.servlet.Filter` 接口的过滤器类,例如命名为 `StaticResourceFilter`。 ```java import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class StaticResourceFilter implements Filter { @Override public void init(FilterConfig filterConfig) { // 初始化方法,可留空 } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpRequest = (HttpServletRequest) request; String requestURI = httpRequest.getRequestURI(); // 如果是以指定的文件扩展名结尾,则设置允许访问静态资源的响应头 if (requestURI.endsWith(".css") || requestURI.endsWith(".js")) { HttpServletResponse httpResponse = (HttpServletResponse) response; httpResponse.setHeader("Access-Control-Allow-Origin", "*"); } chain.doFilter(request, response); } @Override public void destroy() { // 销毁方法,可留空 } } ``` 2. 在应用的 `web.xml`(或者使用注解方式)配置该过滤器。 ```xml <filter> <filter-name>StaticResourceFilter</filter-name> <filter-class>com.example.StaticResourceFilter</filter-class> </filter> <filter-mapping> <filter-name>StaticResourceFilter</filter-name> <url-pattern>*.css</url-pattern> </filter-mapping> <filter-mapping> <filter-name>StaticResourceFilter</filter-name> <url-pattern>*.js</url-pattern> </filter-mapping> ``` 上述配置,我们通过 `<url-pattern>` 指定了要拦截的URL模式,这里使用通配符 `*.css` 和 `*.js` 分别匹配CSSJS文件。在过滤器的 `doFilter` 方法,我们判断请求的URI是否以指定的文件扩展名结尾,如果是,则设置允许访问静态资源的响应头 `Access-Control-Allow-Origin: *`。这样配置后,当HTML页面引用到的CSSJS文件被加载时,浏览器可以正常访问这些静态资源。 请注意,这只是一种简单的方式来放行HTML使用到的静态文件。具体的配置和实现方式可能因服务器和开发环境而异,请根据你的实际情况进行适当调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值