java 404跳转_SpringBoot配置404跳转页面的两种方式-程序员宅基地

技术标签: java 404跳转  

1.情景展示

当请求不存在时,服务器会报404异常,这对于产品用户来说不够友好。

1eb113ecb4bd51a4f0b1a930b15a0ea7.png

2.原因分析

可以配置404请求错误页来进行友好的错误提示。

3.解决方案

方式一:

@GetMapping("*")

public String notFound() {

// 跳转到404页面所在路径

return "404";

}

这种方式,同样适用于springmvc,所有不存在的请求都会映射到该方法上。

但是,问题在于如果项目配置了knife4j项目接口文档,对应的请求是:/doc.html,只有在请求该地址时,项目才会运行生成doc.html,不请求就不存在,因为是临时生成的html文件,原本并不存在于项目当中,所以,在生成页面之前,该方法检测到服务器并不存在doc.html,因此跳转到了404.jsp,就这样,永远也访问不到doc.html,我们也就无法使用knife4j了。

方式二:

为了解决这个问题,我们就不能再使用方式一了。

第一步:添加配置类

/**

* 错误页

* @description: ErrorPage(status,path)说明

* 关于path,既可以重定向具体的html也可以重定向请求地址

* 如果配置的是404.html一定要建在template/static下面,否则无效。

* 如果配置的是/404,那就需要在Controller中添加/404请求对应的方法

* @author: Marydon

* @date: 2020年08月11日 0011 11:25

*/

@Configuration

public class ErrorConfig implements ErrorPageRegistrar {

@Override

public void registerErrorPages(ErrorPageRegistry registry) {

ErrorPage[] errorPages = new ErrorPage[1];

errorPages[0] = new ErrorPage(HttpStatus.NOT_FOUND, "/404.do");

registry.addErrorPages(errorPages);

}

}

第二步:在控制器中添加/404.do请求

/**

* 不存在的请求,跳转到404页面

* @description: ErrorConfig已经拦截了404请求,然后映射到这个请求上

* @date: 2020年07月10日 0010 17:10

* @param:

* @return: java.lang.String

*/

@GetMapping("/404.do")

public String notFound() {

// 跳转到404页面:/jsp/404.jsp

return "404";

}

需要提醒的是:即将跳转的页面,必须是相对于项目来说的绝对路径。

上面是因为我配置了响应路径的前缀和后缀,实际是:/jsp/404.jsp。

2020-12-27

4b55f574c34293fcc4970b7c3858c1e5.png

这里,说一个在idea中的小技巧,要想知道自己配置的文件路径对不对,可以这样:

按住Ctrl键不松手,鼠标悬浮到要跳转的路径上。

6fdb05ff62c87df6293444e51b8fccd5.png

再次点击鼠标,能打开对应页面就说明没有问题。

403c04e7fdb5e8f482ffb0f971952a1a.png

写在最后

哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39613548/article/details/114854966

智能推荐

gvim 换行符替换_gvim换行符-程序员宅基地

文章浏览阅读3k次。用 VIM 编辑文本文件,想在每一行的换行之前,添加一个字符,比如 “;”。想到替换命令::%s/\n/;\n/g结果总是出错。后来找到解决方案::%s/\n/;\r/g有人总结的结论:When searching: \n is newline, \r is CR (carriage return = Ctrl-M = ^M)_gvim换行符

代码的坏味道之十五 :Message Chains(过度耦合的消息链)_面向对象的代码异味messagechain-程序员宅基地

文章浏览阅读1.7k次。如果你看到用户向一个对象索求(request)另一个对象,然后再向后者索求另一个对象,然后再索求另一个对象……这就是Message Chains。实际代码中你看到的可 能是一长串getThis()或一长串临时变量。采取这种方式,意味客户将与查找过程中的航行结构(structure of the navigation)紧密耦合。一旦对象间的关系发生任何变化,客户端就不得不做出相应修改。这时候_面向对象的代码异味messagechain

自用PTA题目记录0004_作为一个职业hr,要给某个项目组的所有职员群发邮件,已经知道hr有所有人的姓名、电-程序员宅基地

文章浏览阅读1.7k次。自用PTA题目记录0004 以下题目序号并无实际意义文章目录自用PTA题目记录00047-2 谷歌的招聘代码总结7-2 谷歌的招聘题目作者: AMi 单位: 临沂大学 代码长度限制: 16 KB 时间限制: 200 ms 内存限制: 64 MB作为一个职业HR,要给某个项目组的所有职员群发邮件,已经知道HR有所有人的姓名、电话以及邮箱,请编写程序,取出所有人的邮箱,合并为一个邮箱列表,邮箱之间以“;”隔开,使其可以群发邮件。输入格式: 在一行中给出所有人的姓名、电话以及邮箱,例如:_作为一个职业hr,要给某个项目组的所有职员群发邮件,已经知道hr有所有人的姓名、电

安装与使用memcached+php_php安装mem-程序员宅基地

文章浏览阅读318次。我们想使用PHP+memcache的开发组合选择一个专门的memcache机器,要么单独准备,要么将它和php放在一起(简略版)。1.安装# 安装依赖# yum -y install libevent-devel# 下载与安装# cd /software# wget http://memcached.org/files/memcached-1.5.20.tar.gz# t..._php安装mem

JS 读取并解析csv文件 —— 前端踩坑13_js读取csv文件内容-程序员宅基地

文章浏览阅读9.5k次,点赞12次,收藏38次。<!doctype html><html><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="initial-scale=1.0..._js读取csv文件内容

Video.js插件切换视频源并操作m3u8格式视频_video.js 6.2.8-程序员宅基地

文章浏览阅读2.3w次,点赞9次,收藏34次。目录第一章 videojs的配置与简介第二章 更改视频源代码与实例第三章 api的部分应用实例第四章 视频api补充介绍添加事件事件绑定前言:老师让我修改一个需要播放器的界面,之前的播放器有挺多功能需要修改,于是就从网上找了新的播放器插件,也就是Video.js,在网上找了挺久没什么靠谱的资料,于是记录一下。第一章 videojs的配置与简介关于videojs我..._video.js 6.2.8

随便推点

bolt数据库简单使用教程_bolt 使用-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏2次。打开数据库package mainimport ("os""github.com/boltdb/bolt""github.com/go-kit/kit/log")func main() {logger := log.NewLogfmtLogger(os.Stdout)db, err := bolt.Open("mydb.db", 0600, nil)if err != nil ..._bolt 使用

Qt在透明QWidget上自由绘画_qwidget 画图-程序员宅基地

文章浏览阅读4.3k次,点赞15次,收藏44次。Qt在透明控件上自由绘画文章目录Qt在透明控件上自由绘画如何让QWidget变透明透明QWidget上响应鼠标事件初学Qt,需要实现这样的效果:在透明的QWidget上自由的绘图,看起来就像是直接在桌面绘图一样。要达到这样的效果,需要分成两个步骤:如何将QWidget变得透明。如何在透明的QWidget控件上使用QPainter绘制图形。当然,第二点是Widget透明之后才发..._qwidget 画图

java中ArrayList之clear内存回收_java如何回收list-程序员宅基地

文章浏览阅读1.7w次。右边为调用clear后内存情况 现将list.clear改为 list=null,再看看运行情况 赋值NULL后不仅列表中的对象变成了垃圾,为列表分配的空间也会回收 clear()只是清除了对象的引用,使那些对象成为垃圾_java如何回收list

基于SSM项目高校在线请假与审批系统-程序员宅基地

文章浏览阅读985次,点赞26次,收藏6次。本系统实现了管理员,教师,学生三个模块的功能,对于学生和教师部分,分别实现了学生请假信息管理,销假信息管理和个人用户等功能,管理员给教师和学生分配了各个用户权限,保证了系统在网络上运行的安全性,保证了学生请假的隐私;学生功能实现了通过网络移动设备如手机和电脑来随时随地提交请假,提升了请假的它方便性和简洁性,无需打扰教师。教师功能实现了对学生请假和销假申请的审批,并能查看相关学生的审核的状态。本系统由于时间,人力和资源的限制,尽管也取得了不错的评价。

python爬虫爬取股票信息(1)-程序员宅基地

文章浏览阅读926次,点赞30次,收藏15次。的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

9、 用户任务(user task)-程序员宅基地

文章浏览阅读2.4k次。用户任务是camunda最常用的任务之一_user task

推荐文章

热门文章

相关标签