懒人学院:Spring MVC框架自定义异常处理器

来源:网络整理时间:2024-04-27 13:33:52

摘要:懒人学院:Spring MVC框架自定义异常处理器

懒人学院:Spring MVC框架自定义异常处理器,以下是小编整理的详细信息,因信息具有时效性,仅供参考。

SpringMVC框架为我们提供了一套自定义异常处理的方法,下面我们通过一个小例子,来了了解一下SpringMVC项目异常处理的常用方法。

一、异常处理的的设计思路

SpringMVC框架通过分层的方法处理异常传递,dao层发生异常会抛给service,service抛给controller,controller抛给前端控制器,前端控制器调用全局异常处理器,这个处理器就是我们要讨论的自定义全局异常处理器。

全局自定义异常处理器设计思路:

1、解析出异常类型

2、判断异常类型

如果该异常类型是自定义异常,直接抛出异常信息,在错误页面展示

如果该异常类型不是自定义异常 ,构造一个自定义的异常类型(信息为“未知错误”),在错误页面展示

二、开发自定义异常处理

1、定义一个自定义的异常类,这个类就是前面提到的自定义异常类,需要继承Exception

package fred.ssm.exception;

public class CustomException extends Exception {

public String message;

public CustomException(String message){

super(message);

this.message=message;

}

}

2、定义一个类,这就是我们说的自定义全局异常处理器,它需要实现HandlerExceptionResolver接口,springmvc框架就会识别它,每个应用程序只能有一个全局异常处理器,编写方法按照我们前面讨论的思路实现。

package fred.ssm.exception;

import org.springframework.web.servlet.HandlerExceptionResolver;

import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class CustomExceptionResolver implements HandlerExceptionResolver{

public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {

CustomException customException = null;

if(e instanceof CustomException){

customException=(CustomException)e;

}else{

customException = new CustomException("未知错误");

}

String message=customException.getMessage();

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("message",message);

modelAndView.setViewName("error");

return modelAndView;

}

}

3、添加错误展示页面 error.jsp,用于抛出异常后处理解析异常错误的视图

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>

<head>

<title>错误提示信息</title>

</head>

<body>

系统产生如下错误信息:${message}

</body>

</html>

4、修改springmvc.xml 实现在springmvc框架中注入全局异常处理器

<!--全局异常处理器,要实现HandlerExceptionResolver接口的类就是全局异常处理器-->

<bean class="fred.ssm.exception.CustomExceptionResolver"/>

三、异常处理测试

测试方法,在controller、service、dao中任意一处手动抛出异常。如果是程序中手动抛出的异常,在页面中显示自定义异常信息,如果不是手动抛出的异常,显示未知错误。

userinfo = userinfoService.FindUserinfoByUsercode(usercode);

if (userinfo==null){

throw new CustomException("修改的用户信息不存在!");

}

这里我们模拟用户输入一个错误的usercode,FindUserinfoByUsercode方法查不到数据后,userinfo==null,这是抛出自定义异常,检查自定义异常处理器时候工作。

Image.png

修改请求的usercode,触发异常

Image.png

在idea集成开发环境中跟踪代码可以看到,这里程序抛出自定义异常

Image.png

页面跳转到error.jsp,并显示自定义错误信息。

Image.png

通过这个小程序的演示,我们可以了解springmvc框架对异常处理的基本方法,希望对大家有所裨益。

【微语】偶尔看到那些为生命努力奋斗的人心中就会有一种感动现在受的挫折又算什么呢。

展开全文
热门推荐
qingdao.safetree.com.cn青岛市学校安全教育平台04-17
https:www.mzedu.gov.cn/zk梅州中考报名系统入口04-19
博州学校安全教育平台入口kelamayi.safetree.com.cn/04-17
杭州市电子税务局入口http://www.hz12366.gov.cn04-27
南京理工大学综合教务管理系统http;//202.119.81.112:808004-23
浙江省普通高中综合素质评价管理平台pjglpt.zjedu.gov.cn04-18
Cleverness is a gift while kindness is a choice. Gifts are04-16
揭阳市学校安全教育平台jieyang.safetree.com.cn/04-17
宁波市学校安全教育平台登陆ningbo.safetree.com.cn/04-17
濮阳市安全教育平台登录https;//puyang.safetree.com.cn/04-27