Spring MVC异常处理

Spring MVC中处理异常的方式有二

1.处理局部异常,也就是单个Controller类中抛出的异常

2.处理全局异常,处理所有Controller类抛出的异常

1.局部异常

首先先创建index.jsp主页面

<html>
<body>
<h2>Hello World!</h2>
</body>
</html>

创建Controller

@Controller
@RequestMapping("/first")
public class FirstController {
    @RequestMapping("/firstRequest")
    public String firstRequest(){
        //模拟异常
        int result=5/0;
        return "index";
    }

配置mvc.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans">
    <!--注解扫描-->
    <context:component-scan base-package="com.springmvc"/>
    <!--开启SpringMVC注解支持-->
    <mvc:annotation-driven/>
    <!--视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
    <!--放行静态资源-->
    <mvc:default-servlet-handler/>
    <!--系统异常处理器-->
    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
        <property name="defaultErrorView" value="error"/>
        <property name="exceptionAttribute" value="ex"/>
       <!-- &lt;!&ndash;定制异常&ndash;&gt;-->
        <property name="exceptionMappings">
            <props>
                <prop key="com.springmvc.exception.NameException">nameError</prop>
                <prop key="com.springmvc.exception.AgeException">ageError</prop>
            </props>
        </property>
    </bean>
    <!--将自定义异常处理器注册到Spring容器当中-->
    <!--<bean class="com.springmvc.exception.MyHandlerException"/>-->
    <!--文件上传解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!--编码-->
        <property name="defaultEncoding" value="UTF-8"/>
        <!--最大字节-->
        <property name="maxUploadSize" value="10000000000"/>
        <!--单文件大小-->
        <property name="maxUploadSizePerFile" value="50000000"/>
    </bean>
</beans>

效果展示:

2.全局异常

@ExceptionHandler
public ModelAndView exceptionHandler(Exception ex){
    ModelAndView modelAndView=new ModelAndView();
    //如果发生异常,我们给他一个默认的异常处理页面
    modelAndView.setViewName("error");
    modelAndView.addObject("ex",ex);

    //如果发生Name异常,则跳转到Name异常页面
    if(ex instanceof NameException){
        modelAndView.setViewName("nameError");
    }
    if(ex instanceof AgeException){
        modelAndView.setViewName("ageError");
    }
    return modelAndView;
}
@RequestMapping("/secondRequest")
public String secondRequest(String userName,Integer userAge) throws NameException, AgeException {
    if(!userName.equals("admin")){
        //手动创建一个Name异常
        throw  new NameException("名称错误!!!!!!!!");
    }
    if(userAge<0||userAge>80){
        //手动创建一个Age异常
        throw  new AgeException("年龄太大,不符合规定!!!!!!");
    }
    return "index";
}

 

 

 

 

posted @ 2019-11-11 15:41  琴昕LNS~  阅读(179)  评论(0编辑  收藏  举报