zoukankan      html  css  js  c++  java
  • 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";
    }
  • 相关阅读:
    2019/10/9 CSP-S 模拟测
    简单的面向对象
    魔术变量
    函数
    全局变量
    超级全局变量
    for循环
    while循环
    php数组排序
    python打造XslGenerator
  • 原文地址:https://www.cnblogs.com/ws1149939228/p/11835516.html
Copyright © 2011-2022 走看看