• SpringMVC(十三)异常注解


    使用异常注解更方便

    异常处理类

    package demo15AnnotationException;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.ExceptionHandler;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * Created by mycom on 2018/3/30.
     */
    @Controller
    public class ExceptionController {
    
        /**
         * 这个标签就代表有异常的话就走这个方法
         * @ExceptionHandler()
         * 这个括号中可以指定你想要的特定的异常类型,不写的话就是顶级异常
         * @param ex
         * @return
         */
        @ExceptionHandler
        public ModelAndView handlerException(Exception ex) {
            ModelAndView mv=new ModelAndView();
            mv.addObject("ex",ex);//保存的数据,在页面上用EL表达式展示错误信息
            //默认情况,下面两个条件都不满足走这个,
            mv.setViewName("error");
            //判断异常类型
            if(ex instanceof NameException){
                mv.setViewName("nameException");
            }
            if(ex instanceof AgeException){
                mv.setViewName("ageException");
            }
            return mv;
        }
    
    
    
        @RequestMapping("/first")
        public String doFirst(String name,int age) throws Exception {
            //根据异常的不同返回不同的页面
            if(!name.equals("admin")){
                throw new NameException("用户名异常");
            }
            if(age>60){
                throw new AgeException("年龄不符合");
            }
            return "success";
        }
    }

    两种异常类型:用户名异常和年龄异常

    package demo15AnnotationException;
    
    /**
     * Created by mycom on 2018/3/30.
     */
    public class NameException extends Exception {
        public NameException() {
            super();
        }
    
        public NameException(String message) {
            super(message);
        }
    }
    package demo15AnnotationException;
    
    /**
     * Created by mycom on 2018/3/30.
     */
    public class AgeException extends Exception {
        public AgeException() {
            super();
        }
    
        public AgeException(String message) {
            super(message);
        }
    }

    配置文件中

    <?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:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
    
        <!--包扫描器-->
        <context:component-scan base-package="demo15AnnotationException"></context:component-scan>
    
        <!--视图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/error/"></property>
            <property name="suffix" value=".jsp"></property>
        </bean>
    
        <!--注解驱动-->
        <mvc:annotation-driven></mvc:annotation-driven>
    
    
    
    
    </beans>

    页面还是使用的上一篇博客的页面,可以自己定义页面

    这种方式只能在本类中使用,在其他类中不能使用,所以我们可以吧处理异常的那个方法提到一个类中,其它类要使用的话就继承这个类,但是这样有一个弊端,在Java中只支持单继承,所以这个类就不能继承其他类了

  • 相关阅读:
    装java开发环境 报client/jvm.dll找不到
    json expected name at 1 1
    svn右键菜单不显
    win10 随记
    eclipse配置打开选中文件存储的目录快捷配置
    mybatis 常见面试题
    java 求取昨天日期
    字符串反转记录总结
    @RequestMapping 无法加载
    expected at least 1 bean which qualifies as autowire candidate for this depe (spring无法注入)
  • 原文地址:https://www.cnblogs.com/my-123/p/8681171.html
Copyright © 2020-2023  润新知