首页 > 其他分享 >SpringMVC系列之(十一)异常处理

SpringMVC系列之(十一)异常处理

时间:2024-02-28 09:03:50浏览次数:20  
标签:十一 系列 SpringMVC springframework import org message servlet public

异常处理

1. 未进行异常处理的异常传递流程

在这里插入图片描述

2. SpringMVC异常处理流程

在这里插入图片描述

3. SpringMVC异常处理开发步骤

  1. 编写自定义异常类(做提示信息的)
  2. 编写异常处理器
  3. 配置异常处理器(跳转到错误提示页面)

4. 实现

Controller中的方法

package cn.itcast.controller;

import cn.itcast.domain.User;
import cn.itcast.exception.TestException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.util.List;
import java.util.UUID;

/**
 * @author 商务小本本
 */
@Controller
@RequestMapping("/test")
public class HelloController {

    @RequestMapping("/testException")
    public String testException() throws TestException {
        try {
            int a = 10/0;
        } catch (Exception e) {
            e.printStackTrace();
            throw new TestException("Controller报错!!!");
        }
        return "success";
    }
}
  1. 编写自定义异常类(做提示信息的)
package cn.itcast.exception;

public class TestException extends Exception{

    private String message;

    @Override
    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public TestException(String message) {
        this.message = message;
    }
}

  1. 编写异常处理器(跳转到错误提示页面)
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 ExceptionResolver implements HandlerExceptionResolver {

    /**
     * 需要实现HandlerExceptionResolver这个接口
     * @param httpServletRequest
     * @param httpServletResponse
     * @param o
     * @param e 此处的e就是Controller中testException方法抛出的异常,此处就是TestException的实例
     * @return
     */
    @Override
    public ModelAndView resolveException(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) {

        ModelAndView mv = new ModelAndView();
        String message = e.getMessage();
        mv.addObject("msg", message);
        mv.setViewName("error");
        return mv;
    }
}
  1. 配置异常处理器
<bean class="cn.itcast.exception.ExceptionResolver" id="exceptionResolver"></bean>

标签:十一,系列,SpringMVC,springframework,import,org,message,servlet,public
From: https://www.cnblogs.com/wzzzj/p/18038911

相关文章

  • SpringMVC系列之(十)文件上传
    文件上传1.文件上传的前提form表单的ectype属性(表单请求正文的类型)取值必须是multipart/form-data,默认值是application/x-www-form-urlencodedmethod属性值为post提供文件选择域<inputtype="file"/>2.文件上传的原理ectype=application/x-www-form-urlencoded(默认值)表......
  • SpringMVC系列之(九)响应数据和结果视图
    响应数据和结果视图1.返回值分类这里的返回值指的是Controller中的方法的返回值。1.1String该字符串为逻辑视图名,通过视图解析器解析为物理视图地址。注:底层调用的是ModelAndView1.1.1实际开发中的应用实体类index.jsp<%--CreatedbyIntelliJIDEA.User:商务......
  • SpringMVC系列之(八)HiddentHttpMethodFilter过滤器
    HiddentHttpMethodFilter过滤器1.应用场景由于浏览器自身只支持发送get/post请求,其他请求方式并不支持,该过滤器用于模拟发送各种请求方式的请求(get/post/put/delete)Spring3.0提供2.浏览器发送PUT/DELETE请求的其他实现方式插件WebClient提供的静态方法HiddentHttpMetho......
  • SpringMVC系列之(六)自定义类型转换器
    自定义类型转换器SpringMVC在进行请求参数绑定时,自动进行了类型转换,前端传来的参数都是字符串,而控制器中的方法在接收时,可能会用到其他数据类型(如:Date、Integer、Double等),以日期类型为例,前端传的日期格式多样,SpringMVC自动转换类型的格式(2011/11/11)支持不了这么多类型,故有的日期......
  • SpringMVC系列之(五)POST请求中文乱码
    POST请求中文乱码1.配置解决中文乱码的过滤器web.xml中增加如下代码<filter><filter-name>characterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><para......
  • SpringMVC系列之(四)请求参数的绑定
    请求参数的绑定获取前端传过来的参数的过程,如:Servlet的getParameter方法SpringMVC中的请求参数绑定:通过反射实现,SpringMVC中的请求参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的。1.支持的数据类型基本数据类型和字符串实体类型(JavaBean)集合数据类......
  • SpringMVC系列之(三)常用注解
    常用注解1.RequestMappingRequestMapping可以放在类上和方法上,放在类上表示一级目录,或表示某一个具体的模块属性path和value属性的作用相同method决定方法的请求方式params:请求必须包含的参数headers:请求必须包含的请求头以上的属性出现多个,需要同时满足2.RequestPa......
  • SpringMVC系列之(一)入门程序
    Web层,表现层入门程序1.需求描述页面上设置一个链接,点击链接后跳转到成功页面。2.搭建环境从骨架创建项目解决创建项目过慢的问题项目创建后,完善目录结构,创建相应的目录并设置目录类型源代码目录(java)和资源目录(resources)注:我这里已经设置过了,所以就不......
  • 《程序是怎样跑起来的》第十一章读后感
    本章的主题是“硬件控制方法”。“计算机如果没有软件,就仅仅是个箱子”,也就是说,软件的存在是硬件正常运行的必要条件,本章主要讲到是程序如何控制CPU和主内存以外的硬件。开篇作者就用一张图说明了硬件控制软件,如下。而Window控制硬件借助的是输入输出指令,书中讲到两种指令,IN和O......
  • 《程序是怎样跑起来的》第十一章读后感
    在阅读《程序是怎样跑起来的》第十一章后,我对于程序的运行和计算机的工作原理有了更为深入的理解。这一章主要探讨了计算机的硬件架构以及程序如何在硬件上实现并行计算,对于我理解计算机系统的底层实现具有很大的帮助。首先,这一章介绍了计算机的硬件架构,包括CPU、内存、硬盘、显......