一.错误的处理

方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController

@Controller
@RequestMapping(value = "error")
public class BaseErrorController implements ErrorController {
private static final Logger logger = LoggerFactory.getLogger(BaseErrorController.class); @Override
public String getErrorPath() {
logger.info("出错啦!进入自定义错误控制器");
return "error/error";
} @RequestMapping
public String error() {
return getErrorPath();
} }

方法二:添加自定义的错误页面

2.1 html静态页面:在resources/public/error/ 下定义

如添加404页面: resources/public/error/404.html页面,中文注意页面编码

2.2 模板引擎页面:在templates/error/下定义

如添加5xx页面: templates/error/5xx.ftl

注:templates/error/ 这个的优先级比较高 resources/public/error/

方法三:使用注解@ControllerAdvice

package com.demo.example.handler;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseStatus;
import org.springframework.web.servlet.ModelAndView; @ControllerAdvice
public class ErrorExceptionHandler{
private static final Logger logger = LoggerFactory.getLogger(ErrorExceptionHandler.class); @ExceptionHandler({RuntimeException.class})
@ResponseStatus(HttpStatus.OK)
public ModelAndView processException(RuntimeException exception) {
logger.info("自定义异常-RuntimeException");
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("roncooException", exception.getMessage());
modelAndView.setViewName("error/500");
return modelAndView;
} @ExceptionHandler({Exception.class})
@ResponseStatus(HttpStatus.OK)
public ModelAndView processException(Exception exception) {
ModelAndView modelAndView = new ModelAndView();
logger.info("自定义异常-Exception");
modelAndView.addObject("roncooException", exception.getMessage());
modelAndView.setViewName("error/500");
return modelAndView;
} }

  

一.错误的处理

方法一:Spring Boot 将所有的错误默认映射到/error, 实现ErrorController

@Controller

@RequestMapping(value = "error")

public class BaseErrorController implements ErrorController {

private static final Logger logger = LoggerFactory.getLogger(BaseErrorController.class);

@Override

public String getErrorPath() {

logger.info("出错啦!进入自定义错误控制器");

return "error/error";

}

@RequestMapping

public String error() {

return getErrorPath();

}

}

方法二:添加自定义的错误页面

2.1 html静态页面:在resources/public/error/ 下定义

如添加404页面: resources/public/error/404.html页面,中文注意页面编码

2.2 模板引擎页面:在templates/error/下定义

如添加5xx页面: templates/error/5xx.ftl

注:templates/error/ 这个的优先级比较 resources/public/error/高

方法三:使用注解@ControllerAdvice

/**

* Copyright 2015-2016 广州市领课网络科技有限公司

*/

package com.demo.example.handler;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.http.HttpStatus;

import org.springframework.web.bind.annotation.ControllerAdvice;

import org.springframework.web.bind.annotation.ExceptionHandler;

import org.springframework.web.bind.annotation.ResponseStatus;

import org.springframework.web.servlet.ModelAndView;

/**

* 异常处理类

*

* @author hugovon

* @version 1.0

*/

@ControllerAdvice

publicclass ErrorExceptionHandler{

privatestaticfinal Logger logger = LoggerFactory.getLogger(ErrorExceptionHandler.class);

@ExceptionHandler({RuntimeException.class})

@ResponseStatus(HttpStatus.OK)

public ModelAndView processException(RuntimeException exception) {

logger.info("自定义异常-RuntimeException");

ModelAndView modelAndView = new ModelAndView();

modelAndView.addObject("roncooException", exception.getMessage());

modelAndView.setViewName("error/500");

returnmodelAndView;

}

@ExceptionHandler({Exception.class})

@ResponseStatus(HttpStatus.OK)

public ModelAndView processException(Exception exception) {

ModelAndView modelAndView = new ModelAndView();

logger.info("自定义异常-Exception");

modelAndView.addObject("roncooException", exception.getMessage());

modelAndView.setViewName("error/500");

returnmodelAndView;

}

}

spring boot ---web应用开发-错误处理的更多相关文章

  1. Spring Boot Web应用开发 CORS 跨域请求支持:

    Spring Boot Web应用开发 CORS 跨域请求支持: 一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等CORS与JSONP相比 1. JSONP只能实现 ...

  2. Spring Boot Web应用开发 CORS 跨域请求支持

    一.Web开发经常会遇到跨域问题,解决方案有:jsonp,iframe,CORS等等 CORS与JSONP相比 1. JSONP只能实现GET请求,而CORS支持所有类型的HTTP请求. 2. 使用C ...

  3. Springboot 系列(七)Spring Boot web 开发之异常错误处理机制剖析

    前言 相信大家在刚开始体验 Springboot 的时候一定会经常碰到这个页面,也就是访问一个不存在的页面的默认返回页面. 如果是其他客户端请求,如接口测试工具,会默认返回JSON数据. { &quo ...

  4. Springboot 系列(六)Spring Boot web 开发之拦截器和三大组件

    1. 拦截器 Springboot 中的 Interceptor 拦截器也就是 mvc 中的拦截器,只是省去了 xml 配置部分.并没有本质的不同,都是通过实现 HandlerInterceptor ...

  5. Springboot 系列(五)Spring Boot web 开发之静态资源和模版引擎

    前言 Spring Boot 天生的适合 web 应用开发,它可以快速的嵌入 Tomcat, Jetty 或 Netty 用于包含一个 HTTP 服务器.且开发十分简单,只需要引入 web 开发所需的 ...

  6. 转-spring boot web相关配置

    spring boot web相关配置 80436 spring boot集成了servlet容器,当我们在pom文件中增加spring-boot-starter-web的maven依赖时,不做任何w ...

  7. Spring Boot 企业级应用开发实战 刘伟东-2018年3月第一版

    Spring会自动搜索某些路径下的Java类 并将这些类注册微Bean实例,这样就省去了所有Bean都配置在XML的麻烦 Spring会适当地将显示指定路径下的的类全部注册微Spring Bean . ...

  8. 最详细的 Spring Boot 多模块开发与排坑指南

    创建项目 创建一个 SpringBoot 项目非常的简单,简单到这里根本不用再提.你可以在使用 IDEA 新建项目时直接选择 Spring Initlalize 创建一个 Spring Boot 项目 ...

  9. Spring Boot Web Executable Demo

    Spring Boot Web Executable Demo */--> pre.src {background-color: #292b2e; color: #b2b2b2;} pre.sr ...

随机推荐

  1. WiFi无线连接过程中有哪几个主要步骤?

    WiFi无线连接过程中有哪几个主要步骤?[1]在使用WIFI功能时,经常性的操作是打开手机上的WiFi设备,搜索到心目中的热点,输入密码,联网成功,成功上网.这个看似简单的过程,背后却是隐藏着大量的无 ...

  2. Java入门基础—面向对象开发

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表 ...

  3. Codeforces 675B Restoring Painting

    链接:传送门 题意:给出3 × 3的方块,其中任意2 × 2的方块和左上角2 × 2的和相等,还给出9个格子中的4个--a,b,c,d ,在1~n中选择一些数(可重复)填入剩下5个格子中,问有多少种填 ...

  4. [转载] C 陷阱与缺陷( C traps and Pitfalls )

    本文转自 https://www.xuebuyuan.com/1951579.html 自己找工作过程中复习过的书包括<C traps and Pitfalls>,<编程珠玑> ...

  5. Eclipse Maven 创建Hello World Web项目

    通过Eclipse创建Maven Web项目的简单步骤 先决条件 (Prerequisites) 1,JDK  environment, 具体的安装JDK的步骤和环境配置一般网上都有,这里就不在赘述. ...

  6. 原生ajax的请求过程

    原生ajax的请求过程 创建全平台兼容的XMLHttpRequest对象: function getXHR(){ var xhr = null; if(window.XMLHttpRequest) { ...

  7. tortoiseGit怎么记住密码

    tortoiseGit每次pull和push的时候都要输入git密码很是麻烦,下面是tortoiseGit记住密码的步骤 首先在你的项目界面右键 选择setting,这个步骤知识看一下你的名称和ema ...

  8. SVN学习总结(1)——SVN简介及入门使用

    SVN简介:  为什么要使用SVN?       程序员在编写程序的过程中,每个程序员都会生成很多不同的版本,这就需要程序员有效的管理代码,在需要的时候可以迅速,准确取出相应的版本. Subversi ...

  9. RabbitMQ学习总结(4)——分发任务在多个工作者之间实例教程

    一.Work Queues(using the Java Client) 走起   在第上一个教程中我们写程序从一个命名队列发送和接收消息.在这一次我们将创建一个工作队列,将用于分发耗时的任务在多个工 ...

  10. mysql数据实时同步到Elasticsearch

    业务需要把mysql的数据实时同步到ES,实现低延迟的检索到ES中的数据或者进行其它数据分析处理.本文给出以同步mysql binlog的方式实时同步数据到ES的思路, 实践并验证该方式的可行性,以供 ...