`

(转)怎么让静态资源不被SpringMVC分配器过滤?

 
阅读更多
问题是这样的:
在SpringMVC项目中,如果web.xml中配置为这样:
   
<servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>
                       org.springframework.web.servlet.DispatcherServlet
                </servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

那静态资源,如js文件、css文件、图片等,都会经过org.springframework.web.servlet.DispatcherServlet过滤,DispatcherServlet当然处理不了这些文件,所以这些文件就发送不到客户端了。

SpringMVC从3.0.4版本开始,新增了一种配置可以解决这个问题,具体配置如下:


   
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        http://www.springframework.org/schema/beans   
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.2.xsd">

    <context:component-scan base-package="com.XXX.XXX" />

    <bean
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix">
            <value>/WEB-INF/pages/</value>
        </property>
        <property name="suffix">
            <value>.jsp</value>
        </property>
    </bean>
    
    <mvc:resources location="/r/" mapping="/r/**" />
    <mvc:annotation-driven />
</beans>



新增的是<mvc:resources location="/r/" mapping="/r/**" />这个配置,相当于告诉SpringMVC,凡是请求路径为 /r/ 开始的,都自动映射到 r目录 下面相同文件名的文件去,而不经过DispatcherServlet过滤,这样就已经搞定了。

分享到:
评论

相关推荐

    SpringMVC集成SpringSecurity

    6. **角色和权限**:SpringSecurity支持基于角色的访问控制(RBAC),可以为用户分配角色,并定义哪些URL或资源对应哪些角色,从而实现权限控制。 7. **自定义逻辑**:除了基本的配置,开发者还可以根据需求编写...

    java后台权限管理系统源码(spring boot+mvc+mybatis).zip

    项目基于jdk1.8整合了springboot+mvc+mybatis(通用mapper)+druid+jsp+bootstrap等技术,springboot+Listener(监听器),Filter(过滤器),Interceptor(拦截器),Servlet,springmvc静态资源,文件上传下载,多数据源切换,缓存...

    Java面试题和答案.pdf

    - **进程**: 最小资源分配单位,包含一个或多个线程。 - **线程**: 最小执行单位,共享进程资源。 **37. 守护线程是什么?** - 守护线程是在后台执行的服务线程,当所有的非守护线程都结束时,守护线程自动结束。 ...

    SSM 最新版

    【SSM最新版】指的是基于Spring、SpringMVC和MyBatis三个开源框架的整合,这一版本中Spring更新到了5.0。Spring是Java企业级应用开发中的核心框架,提供了全面的面向切面编程(AOP)支持以及依赖注入(DI),使得...

    基于SpringBoot2+Shiro+Thymeleaf的后台管理系统.zip

    开发者可以通过阅读启动类、配置文件、Shiro的过滤器配置、Thymeleaf的模板文件等,了解项目的整体架构和业务逻辑。 5. 开发与实践:对于毕业设计或课程设计来说,这个项目提供了一个完整的实战平台。通过学习和...

    某开源项目Guns技术文档+个人总结

    文档指导开发者如何进行项目的高级配置,例如修改项目名和包名、放过接口权限验证、更改静态资源和模板位置、配置多个数据源、添加登录验证码、使用springprofile、多机器部署、使用Redis以及配置XSS过滤器等。...

    超市账单管理系统

    包括`src/main/java`存放源代码,`src/main/resources`存储配置文件,如数据库连接配置、MyBatis的Mapper接口和XML配置等,`src/main/webapp`则包含Web应用相关的资源,如静态文件、视图模板等。 **Maven**是项目...

    java高级工程师面试总结

    - SpringMVC基于前端控制器模式,而Struts2基于拦截器模式。 - SpringMVC更加灵活,易于与其他Spring组件集成。 - Struts2提供了更多的内置标签库和插件支持。 - **SpringIOC和AOP的概念以及实现方式**: - **...

    java面试基础知识.docx

    准备为静态变量分配内存并设初始值;解析将符号引用替换为直接引用;初始化执行类初始化语句。 5. **内存堆与栈**: - **堆**:存放对象实例,所有类的实例都在堆中分配内存,是所有线程共享的区域。 - **栈**:...

    java面试知识

    - **进程**:操作系统分配资源的基本单位,每个进程有自己的内存空间。 - **线程**:进程内的执行单元,共享进程资源,切换开销较小。 ##### JVM的内存结构 - **堆**:所有线程共享的内存区域,用于存储对象实例。...

    互联网创意产品众筹平台

    不多说,懂得人看名字就能知道,挺好的一套案例,包含讲解视频和完整案例。 内容: 『课程目录』: ├─众筹项目-第01天《Atcrowdfunding》3 n7 ]2 w M, M1 ^ ^& P │ ├─代码 - G( G, ]4 n, n! y3 k! o │ ├─...

    java最新面试宝典

    - 准备阶段:为静态变量分配内存并初始化为默认值。 - 解析阶段:将符号引用转化为直接引用。 - 初始化阶段:执行类构造器`()`。 - **面试考察要点:** - 类加载器的种类及其工作原理。 - 双亲委派模型的意义。...

Global site tag (gtag.js) - Google Analytics