详解如何让Spring MVC显示自定义的404 Not Found页面
作者:JerryWangSAP 发布时间:2023-12-12 15:48:47
不知道大家对千篇一律的404 Not Found的错误页面是否感到腻歪了?其实通过很简单的配置就能够让Spring MVC显示您自定义的404 Not Found错误页面。
在WEB-INF的web.xml里添加一个新的区域:
意思是一旦有404错误发生时,显示resouces文件夹下的404.jsp页面。
<error-page>
<error-code>404</error-code>
<location>/resources/404.jsp</location>
</error-page>
现在可以随意开发您喜欢的个性化404错误页面了。
完毕之后,随便访问一个不存在的url,故意造成404错误,就能看到我们刚才配置的自定义404 Not Found页面了。
如果想在Spring MVC里实现一个通用的异常处理逻辑(Exception handler), 能够捕捉所有类型的异常,比如通过下面这种方式抛出的异常,可以按照下面介绍的步骤来做。
1. 新建一个类,继承自SimpleMappingExceptionResolver:
public class GlobalDefaultExceptionHandler extends
SimpleMappingExceptionResolver {
public GlobalDefaultExceptionHandler(){
System.out.println("GlobalDefaultExceptionHandler constructor called!");
}
@Override
public String buildLogMessage(Exception ex, HttpServletRequest request) {
System.out.println("Exception caught by Jerry");
ex.printStackTrace();
return "Spring MVC exception: " + ex.getLocalizedMessage();
}
2. 在Spring MVC的Servlet配置文件里,将刚才创建的类作为一个Bean配置进去:
Bean的ID设置为simpleMappingExceptionResolver,class设置为步骤一创建的类的包含namespace的全名。创建一个名为defaultErrorView的property,其value为generic_error, 指向一个JSP view:generic_error.jsp。
<bean id="simpleMappingExceptionResolver" class="com.sap.exception.GlobalDefaultExceptionHandler">
<property name="exceptionMappings">
<map>
<entry key="Exception" value="generic_error"></entry>
</map>
</property>
<property name="defaultErrorView" value="generic_error"/>
</bean>
generic_error.jsp的源代码:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Generic Error Page of Jerry</title>
</head>
<body>
<h2>Unknown Error Occured, please contact Wang, Jerry.</h2>
</body>
</html>
现在可以做测试了。我之前通过下列语句抛了一个异常:
throw new Exception("Generic Exception raised by Jerry");
这个异常成功地被我自己实现的异常处理类捕捉到,并显示出我自定义的异常显示页面:
来源:https://segmentfault.com/a/1190000016758927
猜你喜欢
- 最近在做项目的时候,一直用一个叫做API的东西,controller注解我会写,这个东西我也会用,但是我确实不知道这个东西是个什么,有点神奇
- 一、项目要求实现一个通讯录通讯录可以用来存储100个人的信息,每个人的信息包括:姓名、性别、年龄、电话、住址提供方法:添加联系人信息删除指定
- gRPCgRPC是由 google开发的一个高性能、通用的开源RPC框架,主要面向移动应用开发且基于HTTP/2协议标准而设计,同时支持大多
- 一个项目中需要使用两个数据库,Oracle 和Mysql,于是参考各个blog,实现此功能。写好后才发现,原来的事务失效了,我去...spr
- seata-1.4.0安装及使用 1、简介Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。
- graylog配置springboot配置依赖compile group: 'de.siegmar', name: '
- 用Stream解决两层List属性求和假设一个人有很多个银行账户,每个银行账户中存有不同金额的存款,那么我们如何用Stream求一组人的所有
- 本文实例为大家分享了java代码统计小程序,供大家参考,具体内容如下可以测试每周你的工作量package rexExp;import jav
- 本文实例为大家分享了Java实现简单酒店管理系统的具体代码,供大家参考,具体内容如下为某个酒店编写程序:酒店管理系统,模拟订房、退房和打印所
- 部分情况下无法通过maven仓库直接下载需要的jar包,只能讲jar包下载至本地来使用,spring boot框架内通过maven加载第三方
- 问题描述在应用MyBatis时,使用对象关系映射,将对象和Aliase映射起来。在Mybatis的文档明确写出,如果你没有明确定义实体类的A
- 本章概要返回JSON数据静态资源访问返回JSON数据默认实现JSON 是目前主流的前后端数据传输方式,Spring MVC中使用消息转换器H
- properties和yml的区别这几天刚好看到Spring Boot当中有两种配置文件的方式,但是这两种配置方式有什么区别呢?proper
- 本文实例讲述了Java日期操作方法工具类。分享给大家供大家参考,具体如下:package com.gcloud.common;import
- idea手动刷新git分支相信很多小伙伴都遇到过这样的问题,在git上新建的分支却在idea的git分支中找不到又不知在哪里刷新,博主最近也
- 前言日常开发中,缓存是解决数据库压力的一种方案,通常用于频繁查询的数据,例如新闻中的热点新闻,本文记录springboot中使用cache缓
- maven 常见命令配置maven常用命令#创建项目 -D设置参数mvn archetype:generate -DgroupId=cn.d
- 前后端分离的项目,前端有菜单(menu),后端有API(backendApi),一个menu对应的页面有N个API接口来支持,本文介绍如何基
- startActivityForResult与startActivity的不同之处在于:1、startActivity( )仅仅是跳转到目标
- 谈到 Java 的线程池最熟悉的莫过于 ExecutorService 接口了,jdk1.5 新增的 java.util.concurren