zoukankan      html  css  js  c++  java
  • Spring MVC异常处理

    Spring MVC异常处理的方式有以下几种

    1.

    <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="defaultErrorView" value="error"/>
            <property name="exceptionAttribute" value="ex"/>
    @Controller
    @RequestMapping("/first")
    public class FirstController {
        @RequestMapping("/firstRequest")
        public String firstRequest(){
            //模拟异常
            int result=5/0;
            return "index";
        }
    <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
    <html>
    <head>
        <title>错误页面</title>
    </head>
    <body>
        发生错误:${ex.message}
    </body>
    </html>

    2.

    <body>
        <form action="/second/secondRequest" method="post">
            姓名:<input type="text" name="userName"/>
            年龄:<input type="text" name="userAge"/>
            <input type="submit" value="提交"/>
        </form>
    </body>
    <!--系统异常处理器-->
        <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
            <property name="defaultErrorView" value="error"/>
            <property name="exceptionAttribute" value="ex"/>
            <!--定制异常-->
            <property name="exceptionMappings">
                <props>
                    <prop key="com.springmvc.exception.NameException">nameError</prop>
                    <prop key="com.springmvc.exception.AgeException">ageError</prop>
                </props>
            </property>
        </bean>
     @RequestMapping("/secondRequest")
        public String secondRequest(String userName,Integer userAge) throws NameException, AgeException {
            if(!userName.equals("admin")){
                //手动创建一个Name异常
                throw  new NameException("名称错误!!!!!!!!");
            }
            if(userAge>80){
                //手动创建一个Age异常
                throw  new AgeException("年龄太大,不符合规定!!!!!!");
            }
            return "index";
        }
    public class NameException extends Exception{
        public NameException() {
        }
    
        public NameException(String message) {
            super(message);
        }
    }
    public class AgeException extends Exception{
        public AgeException() {
        }
    
        public AgeException(String message) {
            super(message);
        }
    }

    3.

    /**
     * 自定义异常处理器
     */
    public class MyHandlerException implements HandlerExceptionResolver {
        @Override
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, 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;
        }
    }
    <!--将自定义异常处理器注册到Spring容器当中-->
        <bean class="com.springmvc.exception.MyHandlerException"/>

    4.

    @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;
        }

    5.

    /**
     * 要让这个类处理所有Controller的异常
     */
    @ControllerAdvice
    public class MyControllerAdvice {
        @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;
        }
    }
  • 相关阅读:
    [百度百科]PCI-E的速度
    Oracle 高版本往低版本备份恢复的方法
    PHP-Java-Bridge使用笔记
    Delphi获取其它进程窗口句柄的3种方法
    二层交换机当三层交换机,使用单臂路由实现二层交换机上的VLAN互通
    Python下科学计算包numpy和SciPy的安装【原创】
    OpenGL: 你不知道的左右手坐标系
    Delphi XE7的安卓程序如何调用JAVA的JAR,使用JAVA的类?
    科普:UTF-8 GBK UTF8 GB2312 之间的区别和关系
    phpmyadmin #1045 #2002 无法登录 MySQL 服务器的解决方
  • 原文地址:https://www.cnblogs.com/Chencheno/p/11836597.html
Copyright © 2011-2022 走看看