在配置好SSM后,进行前后端联调时发现静态资源都显示404,首先想的是被拦截了
在web.xml里面配置的springmvc的DispatcherServlet的mapping为/,则Spring MVC将捕获Web容器所有的请求,因此不能对静态资源进行访问
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern> <!--会拦截URL中带“/”的请求。-->
</servlet-mapping>
但是spring-mvc中配置了如下图,静态资源是可以放行的
<mvc:annotation-driven />
<!--通过location,可以重新定义资源文件的位置-->
<mvc:resources mapping="/resources/**" location="/resources/"/>
<!--静态页面,如html,css,js,images可以访问-->
<mvc:default-servlet-handler />
可参考springMvc里的mvc:resources与静态资源的访问
那么原因出在哪呢,想到会不会是文件目录放的位置问题
原先静态资源是放在WEB-INF下,参考mvc:default-servlet-handler不拦截静态资源的前提条件
想想试试将静态资源都放到webapp下
如图
发现还是不行,但是用了一张图,按照完整的地址去测试,发现是可行的了,说明静态资源已经被放行了
对比静态各自访问的路径发现页面访问的静态资源路径少了项目名称demospring
图片可行的路径为:http://localhost:8081/demospring/resources/images/202102.jpg
页面404的静态资源路径:http://localhost:8081/resources/…
在参考tomcat部署的网站访问不到静态资源
Tomcat部署SpringMvc项目出现无法访问静态资源的问题
后,将Tomcat的部署改为
原先部署的 URL:http://localhost:8081/demospring
Application context: /demospring
至此,项目启动后,静态资源可以正常访问了