配置一个SSM项目后发现不能正常访问静态资源
TOMCAT访问的主页是localhost:8080/ssm/,但是请求静态资源不是请求的localhost:8080/ssm/static/而是请求到localhost:8080/static/
服务器就返回404
id="viewResolver"
class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/"/>
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
<property name="characterEncoding" value="UTF-8"/>
property>
property>
"static/" mapping="static/**"/>
尝试更改
能够正常请求到静态资源
望采纳!!!点击回答右侧采纳即可!!
我看了好久你的代码,看起来你的配置是正确的,这里配置了静态资源的访问路径为 localhost:8080/static/ , 如果你的静态资源文件实际位置为项目的 /WEB-INF/static/ 目录下,那么应该可以正常访问。
但是,我发现你的静态资源文件的位置是在项目根目录下的static文件夹中,这样配置的话会导致404错误,因为没有在该路径找到静态文件。
解决方法:是把静态资源文件夹移到WEB-INF目录下或者修改静态资源文件夹的路径,让其与配置文件中的路径一致,这样就可以正常访问了。
把static去掉试试
这个问题我来替你解决,若有帮助,还望采纳,点击回答右侧采纳即可。
我应该知道你的问题在哪里了,猜你应该是war包的形式部署,那你的静态资源理应可以挪出来,放在tomcat目录下的webapps文件夹下的,这样你就可以顺利通过 localhost:8080/static/xxx访问到了,你可以试试。
你的“/WEB-INF/templates/”模版文件写的有问题,需要追加contentPath
# 错误
<link rel="stylesheet" href="/static/default-theme.css" />
# 正确
<link rel="stylesheet" href="${pageContext.request.contextPath}/static/default-theme.css" />
使用配置类配置tomcat映射静态资源也是不错的方案
缺少根路径,在访问资源时候加上这个根路径,你多看下开源项目,很多都会搞一个公共变量来存这个根路径
可以参考一下这篇文章:【SpringMVC处理静态资源】
改下你的web.xml ,改成这样。或者项目发我,我本地给你调一下试试
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/ssm/</url-pattern>
</servlet-mapping>