ssm中运用thymeleaf触发接口时报错FileNotFoundException,前端报错500,thymeleaf访问了本不该存在的html文件

问题遇到的现象和发生背景

刚学完ssm,想将前段时间做的小项目优化一下,教学老师教了thymeleaf我觉得很好用,但是却发现只要是通过a标签触发的接口都会报500错误,但是相关的接口后端却执行完了。以下是一个点赞的功能,写好的页面是用a标签来访问点赞按钮功能,后端确确实实成功将数据保存到数据库,也就是对应接口确实执行成功了,但是后端最后还是报了java.io.FileNotFoundException,前端也因为报500的错误导致后面的效果全部失效了。我的初衷是点击a标签实现后端保存点赞的数据,但是thymeleaf却去访问了本不该存在的html文件

运行结果及报错内容

img

img

我的解答思路和尝试过的方法

我唯一的解决思路只能将前端的a标签全部改了,但是目前我前端有很多a标签,我过几天要用这个项目做一些事情,可能改不过来这么多a标签,因为其中有一些还包含了css和js。求有没有限制thymeleaf去访问静态资源的方法,防止thymeleaf去访问本不该存在的html。

我想要达到的结果

不改前端代码a标签的情况下解决这个问题


首先修改HTML页面对静态资源文件的访问路径。

(1)在HTML的头部添加thymeleaf的标记
<html lang="en" xmlns:th="http://www.thymeleaf.org">
(2)修改网页文档中的对静态资源的引用,语法规则如下:
命令格式:   
th:href="@{/static/.....}"
 
命令用法:
<link rel="stylesheet"  th:href="@{/static/vendor/bootstrap/css/bootstrap.min.css}">
1.在IDEA中测试路径写法是否正确是按住Ctrl键并用鼠标左键点击,若能跳转到资源则说明路径正确。
2.th:href 替换的是href属性,相对应的还有src,可以使用th:src=“@{/static/....}”进行替换

试试扩展MVC
我们需要对springMVC进行扩展配置则需要继承WebMvcConfigurationSupport
创建SpringMVC配置扩展类,并继承WebMvcConfigurationSupport类。

重写方法
重写方法addResourceHandlers,将其中的请求映射路径做修改。

@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
     // 将url为 /static/** 的请求映射到 /static/ 路径下进行查找
    registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
}

配置文件放行静态资源