Spring MVC全局异常处理器

如果不加以异常处理,错误信息肯定会抛在浏览器页面上,这样很不友好,所以必须进行异常处理。

1.异常处理思路

系统的dao、service、controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图:

Spring MVC全局异常处理器_第1张图片

2.创建异常处理器

 Spring MVC全局异常处理器_第2张图片

package com.by.exception;

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

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * 将全局错误放到容器
 */
@Component
public class GlobalException implements HandlerExceptionResolver {

    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {
        /**
         * 1.发短信、发邮箱
         * 2.设置全局的错误页面
         * 3.把异常信息传递到异常页面
         */
        ModelAndView mv = new ModelAndView();
        mv.addObject("msg",e.getMessage());
        mv.setViewName("exception");
        return mv;
    }
}
  • 在index.jsp里面定义超链接

异常处理器

controller层书写错误

 @RequestMapping("/findAccount")
    public String findAccount(Model model){
        model.addAttribute("msg","欢迎你,Spring MVC");
        int a=1/0;
        return "success";
    }

编写exception.jsp页面

Spring MVC全局异常处理器_第3张图片

<%--
  Created by IntelliJ IDEA.
  User: A
  Date: 2024/1/10
  Time: 14:12
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


    程序出错了:${msg}
嘎了、嘎了、嘎了.....,请联系管理员:111111

3.运行结果

Spring MVC全局异常处理器_第4张图片

你可能感兴趣的:(spring,mvc,java)