springmvc异常统一处理(SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解)

:暂无数据 2026-07-28 12:50:08 4

springmvc异常统一处理(SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解)

本篇文章给大家谈谈springmvc异常统一处理,以及SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解

SpringMVC通过使用 HandlerExceptionResolver处理程序异常。
在没有加《mvc:annotation-driver /》之前,SpringMVC的DispatcherServlet默认装配AnnotationMethodHandlerExceptionResolver异常处理器。使用了《mvc:annotation-driver /》 SpringMVC将装配HandlerException异常处理器。

注意,@ExceptionHandler注解的方法里不能用Map作为参数,如果需要需要将异常传导到页面上,需要使用ModelAndView作为返回值。

此时,当被@ExceptionHandler注解标识的方法所在的被@Controller注解标识类出现异常时,将会调用异常处理器testExceptionHandler1方法,testExceptionHandler2将不会被调用。

2.@ResponseStatus作用于方法上

如果@ResponseStatus作用于方法上,无论方法执行成功与否都会返回到自定义的异常页面。

Spring Boot中Controller的统一异常处理

我们在做Web应用的时候,请求处理过程中发生错误是非常常见的情况。Spring Boot提供了一个默认的映射: /error ,当处理中抛出异常之后,会转到该请求中处理,并且该请求有一个全局的错误页面用来展示异常内容。

虽然,Spring Boot中实现了默认的 error 映射,但是在实际应用中,上面你的错误页面对用户来说 并不够友好 ,我们通常需要去实现我们自己的异常提示。

下面我们以之前的Web应用例子为基础,进行统一异常处理的改造。

通过使用 @ControllerAdvice 定义统一的异常处理类,而不是在每个Controller中逐个定义。 @ExceptionHandler 用来定义函数针对的异常类型,最后将Exception对象和请求URL映射到error.html中。

在templates目录下创建error.html,将请求的URL和Exception对象的message输出。

***隐藏网址***

通过实现上述内容之后,我们只需要在Controller中抛出Exception,当然我们可能会有多种不同的Exception。然后在 @ControllerAdvice 类中,根据抛出的具体Exception类型匹配 @ExceptionHandler 中配置的异常类型来匹配错误映射和处理。

在上述例子中,通过 @ControllerAdvice 统一定义不同Exception映射到不同错误处理页面。而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这时候我们也能轻松支持。

本质上,只需在 @ExceptionHandler 之后加入 @ResponseBody ,就能让处理函数return的内容转换为JSON格式。

下面以一个具体示例来实现返回JSON格式的异常处理。

code:消息类型,message:消息内容,url:请求的url,data:请求返回的数据

至此,已完成在Spring Boot中创建统一的异常处理,实际实现还是依靠Spring MVC的注解,更多更深入的使用可参考Spring MVC的文档。

十一、SpringMVC之自定义异常处理器

在实际开发中,经常会出现一些各种不可避免的异常,404、500等,出现异常后,不经过处理,会将错误的堆栈信息暴露到前端页面,对用户而言非常不友好,为了解决该问题,我们可以引入SpringMVC的异常处理机制:

当controller抛出异常后,应该去调用异常处理器组件,再去调腔茄用异常处理器处理异常,从而跳转一些比较友好的页面。
解决步骤:
1、编写自定义异常类(做提示信息的)
2、编写异常处理器
3、配置异常处理器(跳转到提示页面)

编写自定义异常处雀扮理类

SpringMVC配置文件中进行配置异常处理器

1、需要自定义一个异常类SysException

2、编写异常处理器(实现HandlerExceptionResolver)

3、配置异常处理器(在spring的配置文件中配置异常处理器)

4、应用
在需要抛出自定义异常的地方伍岁察,throw自己写的异常类,异常处理器匹配到相应的异常后,做对应处理。

5、数据展示

怎么对springmvc 返回的数据进行统一拦截

用token,使用token的逻辑是,给所有的url加一个拦截器,在拦截器里面用java的UUID生成一个随机的UUID并把这个UUID放到session里面,然后在浏览器做数据提交的时候将此UUID提交到服务器。服务器在接收到此UUID后,检查一下该UUID是否已经被提交

关于spring的一个异常,怎么解决

spring mvc 异常统一处理方式
springMVC提供的异常处理主要有两种方式,顷正一种是直接实现自己的HandlerExceptionResolver,另一种是使用注解的方式实现一个专门用于处理异常的Controller——ExceptionHandler。

1、实现自己的HandlerExceptionResolver,HandlerExceptionResolver是一个接口,springMVC本身已经对其有了一个自身的实现——DefaultExceptionResolver,该解析器只是对其中的一些比较典型的异常进行了拦截处理。

***隐藏网址***
***隐藏网址***

import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;

public class ExceptionHandler implements HandlerExceptionResolver {

@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response, Object handler, Exception ex) {
// TODO Auto-generated method stub
return new ModelAndView("exception");
}

}

上述的resolveException的第4个参数表示对哪种类型的异常进行处理,如果想同时对多种异常进行处理,可以把它换成一个异常数组。
定义了这样一个异常处理器之后就要在applicationContext中定义这样一个bean对象桐裤,如:
《bean id="exceptionResolver" class="com.tiantian.xxx.web.handler.ExceptionHandler"/》

2、使用@ExceptionHandler进行处理
使用@ExceptionHandler进行处理有一个不好的地方雀轮悔是进行异常处理的方法必须与出错的方法在同一个Controller里面

SpringMVC统一处理BindingResult

想要统一处理,就不要在形参中定义BindingResult类,具体参考这里:
***隐藏网址***

springmvc调用webservice线上异常

根据查询相关公开信息显示,springmvc调用webservice线上异常处理步骤如下:
1、引发springmvc调用webservice线上异常的原因有多种,首先我们要确认是哪种原因引起的异常。
2、比如Java.lang.NoClassDefFoundError:javax/xml/soap/SOAPException,原因是没有导入axis2-saaj.jar包。
3、比如java.lang.NoClassDefFoundError:org/apache/commons/discovery/tools/DiscoverSingleton,原因是没有导入commons-discovery.jar包。
4、再比如org.apache.commons.logging.LogFactory,原因是没有导入commons-logging.jar包。
5、我们需要根据具体的异常报错提示,找到对应的引发原因,对症下药去进行处理。

关于springmvc异常统一处理和SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

springmvc异常统一处理(SpringMVC - 异常处理器@ExceptionHandler与@ResponseStatus注解)

本文编辑:admin

本文相关文章:


aspectj和springaop区别(spring已经实现了aop,为什么还要用“aspectj”)

aspectj和springaop区别(spring已经实现了aop,为什么还要用“aspectj”)

本篇文章给大家谈谈aspectj和springaop区别,以及spring已经实现了aop,为什么还要用“aspectj”对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题

2026年7月23日 18:40

简述mvc架构的流程(springmvc工作流程)

简述mvc架构的流程(springmvc工作流程)

大家好,简述mvc架构的流程相信很多的网友都不是很明白,包括springmvc工作流程也是一样,不过没有关系,接下来就来为大家分享关于简述mvc架构的流程和springmvc工作流程的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我

2026年7月22日 17:10

llikespring的中文意思(速求I like spring英语作文 50字差不多)

llikespring的中文意思(速求I like spring英语作文 50字差不多)

其实llikespring的中文意思的问题并不复杂,但是又很多的朋友都不太了解速求I like spring英语作文 50字差不多,因此呢,今天小编就来为大家分享llikespring的中文意思的一些知识,希望可以帮助到大家,下面我们一起来

2026年7月12日 04:30

spring框架有代码吗(spring框架包含哪些内容)

spring框架有代码吗(spring框架包含哪些内容)

这篇文章给大家聊聊关于spring框架有代码吗,以及spring框架包含哪些内容对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年7月4日 18:20

更多文章:


androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

androidapp源码免费下载(如何实现APK的反编译得到APK的源码)

本篇文章给大家谈谈androidapp源码免费下载,以及如何实现APK的反编译得到APK的源码对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 18:00

security的反义词(risk的反义词)

security的反义词(risk的反义词)

大家好,今天小编来为大家解答以下的问题,关于security的反义词,risk的反义词这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 15:40

二郎神杨戬简笔画(二郎神怎么画)

二郎神杨戬简笔画(二郎神怎么画)

本篇文章给大家谈谈二郎神杨戬简笔画,以及二郎神怎么画对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:50

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

service pack 3(操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思)

大家好,关于service pack 3很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于操作系统版本升级(SP) Service Pack 3当中的“Service Pack 3”是什么意思的知识点,相信应该可以解决大家的一

2026年9月22日 10:20

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

html代码怎么写大佬教程(html网页的题来个大佬,写代码,题目在图上)

本篇文章给大家谈谈html代码怎么写大佬教程,以及html网页的题来个大佬,写代码,题目在图上对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

2026年9月22日 10:10

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

结构体内又一个struct(c++ 在结构体中再嵌入一个结构体如何调用)

本篇文章给大家谈谈结构体内又一个struct,以及c++ 在结构体中再嵌入一个结构体如何调用对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 09:40

next是什么意思英语(next是什么单词)

next是什么意思英语(next是什么单词)

本篇文章给大家谈谈next是什么意思英语,以及next是什么单词对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年9月22日 07:50

美国参议院人数(美国每个州的议员人数取决于什么)

美国参议院人数(美国每个州的议员人数取决于什么)

大家好,今天小编来为大家解答以下的问题,关于美国参议院人数,美国每个州的议员人数取决于什么这个很多人还不知道,现在让我们一起来看看吧!

2026年9月22日 05:20

高中信息技术python(高考信息技术用的是什么语言)

高中信息技术python(高考信息技术用的是什么语言)

今天给各位分享高考信息技术用的是什么语言的知识,其中也会对高考信息技术用的是什么语言进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

2026年9月22日 02:50

cocos creator中文(cocoscreator和cocoscreator3d的区别)

cocos creator中文(cocoscreator和cocoscreator3d的区别)

各位老铁们好,相信很多人对cocos creator中文都不是特别的了解,因此呢,今天就来为大家分享下关于cocos creator中文以及cocoscreator和cocoscreator3d的区别的问题知识,还望可以帮助大家,解决大家的

2026年9月22日 02:30

最近更新

诸城网站制作需要哪些资料?
2026-09-22 19:00:55 浏览:0
湖南长沙个人网站建设多少钱?
2026-09-22 18:59:57 浏览:0
酷网站怎么从零开始搭建?
2026-09-22 18:59:28 浏览:0
上海本地商家关键词优化怎么做?
2026-09-22 18:58:54 浏览:0
热门文章

wait for you杨和苏(大家听下(wait for you)这首英文歌的开头那段音乐)
2026-06-13 16:20:04 浏览:22
刷关键字排名怎么操作最有效?
2026-09-14 20:02:13 浏览:14
oppo a9拆机教程(oppoa9拆机教程)
2026-06-13 10:40:02 浏览:12
标签列表