spring-mvc里的 <mvc:resources> 及静态资源访问

在进行Spring MVC的配置时,通常我们会配置一个dispatcher servlet用于处理对应的URL。配置如下:

<!-- The front controller of this Spring Web application, responsible for handling all application requests -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Map all requests to the DispatcherServlet for handling -->
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

只拦截.do请求配置如下:

<servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping> 

这表示名字为SpringMVC的servlet会处理一切的url对应的请求,那么我们怎么让servlet来处理项目中的静态资源呢?这里有两种方法。

1、另外使用一个servlet来处理静态资源。若我们的资源放置在webapps文件夹下的resources文件夹中,那么我们可以用名字为default的servlet来处理静态资源。因此我们还需要在上述配置的基础上加上以下配置:

<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>resources/*</url-pattern>
</servlet-mapping>  

这表示default的servlet会处理url中为reresources/*的对应请求。这样,当你把你的image,css以及其他文件放在resources文件中时,spring就可以找到它啦。

2.采用spring自带<mvc:resources>方法。首先找到你定义的那个servlet的xml文件,如本例子中,servlet的名字叫mvc-dispatcher,因此需要找到mvc-dispatcher-servlet.xml文件,并在该文件中插入以下配置:

<mvc:annotation-driven/>
<mvc:resources mapping="/resources/**/" location="/resources/"/>  

如此就不必另外添加一个mvc来处理静态资源。而mvc知道静态资源所处的位置为resources文件夹。

两种方法都可以将spring mvc配置处理静态资源。

在SpringMVC3.0之后推荐使用:(一)

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

说明:location元素表示webapp目录下的static包下的所有文件;

mapping元素表示以/static开头的所有的请求路径,并当做静态资源交由Servlet处理。

也推荐使用:(二)

web.xml里添加如下的配置:

    <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.css</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.gif</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.jpg</url-pattern>
    </servlet-mapping>
    <servlet-mapping>
      <servlet-name>default</servlet-name>
      <url-pattern>*.js</url-pattern>
    </servlet-mapping>

转载:https://www.cnblogs.com/linnuo/p/7699401.html

原文地址:https://www.cnblogs.com/xianfengzhike/p/10122522.html

时间: 2024-08-02 09:37:02

spring-mvc里的 <mvc:resources> 及静态资源访问的相关文章

spring mvc官网下最新jar搭建框架-静态资源访问处理-注解-自动扫描

1.从官网下载spring相关jar http://spring.io/projects 点击SPRING FRAMEWORK 2.从GitHtb下载 3.向下滚动找到Downloading Artifacts 点击 4.点击Artifacts-->libs-release-local-->org-->springframewor-->spring 5.选中一个自己需要的版本(我选了4.2.5) 6.下载后的文件 配置文件的规范约束下面文件夹有的都可以写(我用到了beans, co

Spring MVC Restful构建中静态资源访问问题

在构建Spring MVC Restful风格的应用时,由于在web.xml中: <span style="font-family:Microsoft YaHei;font-size:18px;"><servlet> <servlet-name>story</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</se

SpringMVC REST 风格静态资源访问配置

1 在web.xml中使用默认servlet处理静态资源,缺点是如果静态资源过多,则配置量会比较大,一旦有遗漏,则会造成资源无法正常显示或404错误. <!-- 静态资源访问控制 --> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-

springMVC对静态资源访问的处理

<servlet> <servlet-name>mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB

JavaWEB项目静态资源访问问题

今天碰到一个问题,SSM项目WEB-INF目录下的静态资源例如.css .js .font等文件无法访问.百度了一下,需要配置SpringMvc对访问静态资源的支持. 如果将DispatcherServlet请求映射配置为"/",则Spring MVC将捕获Web容器所有的请求,包括静态资源的请求,Spring MVC会将它们当成一个普通请求处理,因此找不到对应处理器将导致错误.这可能是个历史性的问题.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置Di

SpringBoot静态资源访问+拦截器+Thymeleaf模板引擎实现简单登陆

在此记录一下这十几天的学习情况,卡在模板引擎这里已经是四天了. 对Springboot的配置有一个比较深刻的认识,在此和大家分享一下初学者入门Spring Boot的注意事项,如果是初学SpringBoot,或者有意向学习Springboot的朋友,这篇文章可以简单的来帮助你,处理一些不必要的麻烦. 开发环境: IDea JDK1.8 SpringBoot2+ Maven3.5 1.配置Maven 首先我们打开IdeA我们从新建一个项目开始.SpringBoot是基于Maven来管理Jar包的.

【SpringMVC】静态资源访问的问题

在项目中经常会用到一些静态的资源,而一般我们在配置SpringMVC时会让SpringMVC接管所有的请求(包括静态资源的访问), 那么我们怎样才能最简单的来配置静态资源的访问呢? 一,在web.xml中让SpringMVC接管所有请求 如图 二,在SpringMVC中配置静态资源映射路径 这句话的意思是将ccc这个文件夹的访问路径映射为javaScript 也就是说 我们在地址栏里面访问JavaScript下的某个图片,其实经过SpringMVC的处理后,访问的是ccc下的文件 例如我们要访问

Django1.7如何配置静态资源访问

Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些资源我们并不需要过多的限制,所以任由用户访问,这时我们就没必要在加一个request请求,转发或重定向访问,我们可以直接使用Django的静态资源访问策略. 默认在django里是不支持静态资源访问的,我们需要稍微配置映射才可以. (1)确认你的INSTALLED_APPS里面有'django.co

springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层

2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static  /public  /resources  /META-INF/resources 可以在src/main/resources目录下创建static,在该位置放置一个图片文件. 启动程序后,尝试访问http://localhost:8080/D.JPG,如能显示图片,配置成功. 2.5 SpringBoot整合freemarker视图