聊一聊关于静态资源的访问问题web
首先,咱们要对web.xml里面的DispatcherServlet进行设置spring
<!-- 中央调度器--> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <!--tomcat 一启动就能够加载中央调度器,数字只要大于0 便可--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!-- url-pattern设置为:"/",当你使用了"/",他会替代Tomcat中的default, 致使全部的资源都给DispatcherServlet处理,默认状况下DispatcherServlet 没有处理静态资源的能力,没有控制器对象能处理静态资源的访问,因此致使静态资源 访问失败都是404,动态代理能够正常访问。若是不设置url-pattern设置为:"/", 则不存在静态资源访问不到 --> <url-pattern>/</url-pattern> </servlet-mapping>
因为设置了url-pattern为:"/",接下来咱们还须要设置springmvc的配置文件,让静态资源能够被访问到。有两种方式tomcat
<!--添加该标签--> <mvc:default-servlet-handler /> <!-- 原理: 给程序内存中增长一个处理器对象:DefaultServletHttpRquestHandler。 让这个对象能够把接收到的请求转发给Tomcat的default这个servlet。 可是这个标签与@RequestMapping这个注解有冲突,因此须要加入注解驱动:<mvc:annotation-driven /> --> <mvc:annotation-driven />
<!-- 使用框架中的:<mvc:resource mapping="" location=""/>标签, 标签加入后框架会本身建立ResourceHttpRequestHandler这个处理器对象。 让这个对象处理静态资源的访问,不依赖于Tomcat服务器。该标签与@RequestMapping 注解有冲突,须要加注解驱动:<mvc:annotation-driven /> 参数: location:静态资源在你的项目中的位置 mapping:访问静态资源的URI地址,使用通配符 ** ,表明多级任意 参数内的静态资源皆能够被访问 --> <mvc:resources location="/img/" mapping="/img/**"/>
好啦,这就是目前做为一个算不上菜鸟的菜鸟对springmvc静态资源访问的掌握程度。欢迎留言服务器