zoukankan      html  css  js  c++  java
  • 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>
    
  • 相关阅读:
    Java8 Stream Function
    PLINQ (C#/.Net 4.5.1) vs Stream (JDK/Java 8) Performance
    罗素 尊重 《事实》
    小品 《研发的一天》
    Java8 λ表达式 stream group by max then Option then PlainObject
    这人好像一条狗啊。什么是共识?
    TOGAF TheOpenGroup引领开发厂商中立的开放技术标准和认证
    OpenMP vs. MPI
    BPMN2 online draw tools 在线作图工具
    DecisionCamp 2019, Decision Manager, AI, and the Future
  • 原文地址:https://www.cnblogs.com/Lilwhat/p/12605588.html
Copyright © 2011-2022 走看看