spring-mvc web项目引入文件, 启动项目报错,错误:引入的图片、js和css文件路径找不到的问题
错误原因是项目采用注解的方式,使用spring mvc需要配置其使用的servlet.在web.xml中配置如下信息:
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
这是会影响到静态资源文件的获取,这样就需要有这个标签来帮你分类完成获取静态资源的责任。
解决方案:
第一种:
在spring-mvc对应的配置文件中加上如下代码:
<mvc:annotation-driven />
<mvc:resources mapping="/scripts/**" location="/scripts/" />
<mvc:resources mapping="/styles/**" location="/styles/" />
<mvc:resources mapping="/images/**" location="/images/" />
<mvc:default-servlet-handler />
小编在解决这个问题时就遇到了问题,当时配置文件少了第一句<mvc:annotation-driven /> 项目启动还是报js、css和图片文件路径找不到的错,加上后启动项目正常访问了,引入文件也都可以访问了。
第二种:
就是web.xml种配置静态资源访问
<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>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
指明对于如上资源文件不采用spring的过滤器 关于default是tomcat配置的一个servlet,“DefaultServlet被定义在$CATALINA_HOME/conf/web.xml中,
配置文件中被定义的东西会在Tomcat启动的时候 被加载,对所有的webapp都有效。DefaultServlet在Tomcat中主要是做目录列表(Directory Listing)用