• SpringMVC异常处理


    SpringMVC异常处理

    异常处理思路

    1. Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进 行异常的处理。

    {{uploading-image-965990.png(uploading...)}}

    SpringMVC的异常处理

    自定义异常类

    package cn.itcast.exception;
    
    /**
     * 自定义异常类
     */
    public class SysException extends Exception{
    
        // 存储提示信息的
        private String message;
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    
        public SysException(String message) {
            this.message = message;
        }
    
    }
    

    自定义异常处理器

    package cn.itcast.exception;
    
    import org.springframework.web.servlet.HandlerExceptionResolver;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 异常处理器
     */
    public class SysExceptionResolver implements HandlerExceptionResolver{
    
        /**
         * 处理异常业务逻辑
         * @param request
         * @param response
         * @param handler
         * @param ex
         * @return
         */
        public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
            // 获取到异常对象
            SysException e = null;
            if(ex instanceof SysException){
                e = (SysException)ex;
            }else{
                e = new SysException("系统正在维护....");
            }
            // 创建ModelAndView对象
            ModelAndView mv = new ModelAndView();
            mv.addObject("errorMsg",e.getMessage());
            mv.setViewName("error");
            return mv;
        }
    
    }
    

    配置异常处理器

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xmlns:context="http://www.springframework.org/schema/context"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           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="cn.itcast"/>
    
        <!-- 视图解析器对象 -->
        <bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/pages/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    
        <!--前端控制器,哪些静态资源不拦截-->
        <mvc:resources location="/css/" mapping="/css/**"/>
        <mvc:resources location="/images/" mapping="/images/**"/>
        <mvc:resources location="/js/" mapping="/js/**"/>
    
        <!--配置异常处理器-->
        <bean id="sysExceptionResolver" class="cn.itcast.exception.SysExceptionResolver"/>
    
        <!-- 开启SpringMVC框架注解的支持 -->
        <mvc:annotation-driven />
    
    </beans>
    

    Usercontolle.java

    package cn.itcast.controller;
    
    import cn.itcast.exception.SysException;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/user")
    public class UserController {
    
    
        @RequestMapping("/testException")
        public String testException() throws SysException{
            System.out.println("testException执行了...");
    
            try {
                // 模拟异常
                int a = 10/0;
            } catch (Exception e) {
                // 打印异常信息
                e.printStackTrace();
                // 抛出自定义异常信息
                throw new SysException("查询所有用户出现错误了...");
            }
    
    
    
            return "success";
        }
    
    }
    

    index.jsp

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2018/5/5
      Time: 22:08
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    
        <h3>异常处理</h3>
    
        <a href="user/testException" >异常处理</a>
    
    </body>
    </html>
    
  • 相关阅读:
    bzoj3675 [Apio2014]序列分割
    bzoj3206 [Apio2013]道路费用
    bzoj3205 [Apio2013]机器人
    bzoj4241 历史研究
    bzoj2821 作诗(Poetize)
    bzoj2724 [Violet 6]蒲公英
    bzoj2811 [Apio2012]Guard
    bzoj2809 [Apio2012]dispatching
    PHP 文字,图片水印,缩略图,裁切成小图(大小变小)
    PHP文件下载方式
  • 原文地址:https://www.cnblogs.com/Lilwhat/p/12605588.html
Copyright © 2020-2023  润新知