0
点赞
收藏
分享

微信扫一扫

多种方法解决SpringMVC拦截器无法加载css,js静态资源问题

RJ_Hwang 2022-01-06 阅读 20

四种方法教你解决拦截器无法加载静态资源

😎拦截器是为了保障网站的资源安全问题😎

我们通常为网站设置拦截器

但是我们设置拦截器一般都是/**

❌使用/**进行全局拦截❌

全部资源都被拦截

✔️然后让拦截器去判断是否通过✔️

但是如果没有对静态资源进行管理🤷‍♂️

😢静态资源就没法正常加载😢

一般的拦截器配置 :

<!--        拦截器-->
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>

            <!--排除拦截-->
            <mvc:exclude-mapping path="/user/login"/>

                <!--配置的拦截器-->
            <bean class="com.example.demo.interceptor.PrivliegeInterceptor"/>

        </mvc:interceptor>
    </mvc:interceptors>

方法一:

直接对拦截器动手脚😏        

(简单粗暴,😎灵活度低不太推荐)

原理//对后缀进行判断

        是静态资源后缀就通过

  public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
       
        HttpSession session = request.getSession();
        String uri = request.getRequestURI();
//在此处对后缀进行判断是静态资源后缀就通过
        if(uri.endsWith("js")||uri.endsWith("css")||uri.endsWith("jpg")||uri.endsWith("svg")){
            return true ;
        }
        User user=(User)session.getAttribute("user");
        if(user!=null){
            return true;
        }else {
            response.sendRedirect(request.getContextPath()+"/login.jsp");
            return false;
        }
    }

方法二:

对配置文件进行修改 😏

(短短一句解决问题) 

<mvc:default-servlet-handler></mvc:default-servlet-handler>

🙁如果不行还往下🙁

方法三:

对资源进行拦截排除 😏

在配置拦截器时就可以把资源排除拦截

  <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!--        排除拦截-->
            <mvc:exclude-mapping path="/user/login"/>
            <mvc:exclude-mapping path="/css/**"/>
            <mvc:exclude-mapping path="/img/**"/>
            <mvc:exclude-mapping path="/plugins/**"/>
            <bean class="com.example.demo.interceptor.PrivliegeInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>

<mvc:default-servlet-handler></mvc:default-servlet-handler>

对资源排除拦截了后面还是需要加开放静态资源

方法四:

配置静态资源映射😏

<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/js/**" location="/js/"/>

这几个方法最稳的是 方法三

通过拦截器的排除对资源的限制开放资源

举报

相关推荐

0 条评论