当我们启动了全局处理异常 以后 我们就不需要去抛 异常 或者处理异常了,这个类会去帮我们自动处理;它只需要实现
HandlerExceptionResolver
这个类是要和controller是一个层次的,不然不会执行 这个全局异常 不需要我们去放在容器里面,只要我们扫到他就可以了
package com.xingxue.springmvc.web;
import org.springframework.stereotype.Component;
import org.springframework.ui.Model;
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 GlobExceptionResolver implements HandlerExceptionResolver {
//提供该方法来集中处理异常
//ex 封装了产生异常的 信息
public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("产生异常,进入了异常处理器的处理方法进行处理....");
ModelAndView modelAndView = new ModelAndView();
modelAndView.setViewName("error");//跳转到error异常的页面
modelAndView.addObject("error",ex.getMessage());//这个是用来显示异常信息的,在后面我们用EL表达式将他取出来
return modelAndView;
}
}
给他产生一个页面 产生异常就跳转到这个页面上去 这个页面是在jsps下面的,前面的步骤见上以上
<%--
Created by IntelliJ IDEA.
User: Administrator
Date: 2018/4/25 0025
Time: 下午 4:46
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
<title>Title</title>
</head>
<body>
系统出现异常!!!!!! ${error}
</body>
</html>