访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)

问题描述


1、一般情况下,Thymeleaf资源由 Controller中函数控制使用。在开发者控制下并不会出现调用不存在的资源的情况–>

这里写图片描述

2、但还有种情况的路径是这样写的 page/{page} 返回 return “page”–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第1张图片

3、这种情况下在地址栏随便的输入地址 page/×××,资源不存在,后台便会报错,跳转到500(服务器出错)页面–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第2张图片

4、但是页面找不到,理应是进入404页面的–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第3张图片

解决方案:用过滤器拦截并跳转


1、写拦截器–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第4张图片
- 获取访问路径,获取要访问的资源文件并判断是否存在,如红框(注意,我的页面资源是在 resources/template下)
- 添加错误信息,返回404页面

2、Controller 加入404访问路径–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第5张图片

再次测试,成功进入了404页面–>

访问不存在的Thymeleaf 资源时使页面转向 404,而不是500 (Spring Boot)_第6张图片

因为这个问题网上比较少,所以用了较大篇幅来解释。

除此方法外如有更好方法,欢迎(谢谢)告知~

你可能感兴趣的:(Spring)