一.错误的处理

方法一: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. 关于<marquee>、<form>、input中的<text>、<password>、<hidden>、<wenbenkuang>、<reset>、<image>、<submit>、<radio>、<checkbox>以及<select><iframe src>的用法

    <html>    <head>        <meta charset="UTF-8">        <title></ ...

  2. Facebook再次爆出安全漏洞,9000万用户受影响

    今年上半年开始,美国社交媒体Facebook因数据泄露事件和涉嫌操纵选举等问题频繁接受听证会拷问,然而事情却远没有结束.今年9月Facebook再次爆出安全漏洞,导致9000万用户可能受到影响. 根据 ...

  3. 改变浏览器页面默认滚动条样式scrollbar

    scrollbar-3d-light-color 设置或检索滚动条亮边框颜色scrollbar-highlight-color 设置或检索滚动条3D界面的亮边(ThreedHighlight)颜色sc ...

  4. Redis字符串(STRING)中BIT相关命令

    上篇文章我们对STRING数据类型中一些基本的命令进行了介绍,但是没有涉及到BIT相关的命令,本文我们就来看看几个和BIT相关的命令. 本文是Redis系列的第四篇文章,了解前面的文章有助于更好的理解 ...

  5. IDEA Maven Web项目 clone到本地导入到Eclipse中,启动服务器的时候会出现这个错误:SEVERE: Exception starting filter [hiddenHttpMethodFilter]

    背景(Background): 我将一个IDEA的maven web项目clone到本地,并导入到Eclipse中. I imported a MAVEN WEB project which was ...

  6. 洛谷——P2822 组合数问题

    https://www.luogu.org/problem/show?pid=2822 题目描述 组合数C_n^mC​n​m​​表示的是从n个物品中选出m个物品的方案数.举个例子,从(1,2,3) 三 ...

  7. git batch

    git batch 不用每次自己写了:不是特别推荐哦: git add . git commit -m "commit" git push git status

  8. Ruby中写换行

    Ruby中写换行 print("Hello,\nRuby\n!\n") print("Hello, Ruby ! ") 这两个竟然是一样的:就是说,可以直接回车 ...

  9. yolo源码解析(1):代码逻辑

    一. 整体代码逻辑 yolo中源码分为三个部分,\example,\include,以及\src文件夹下都有源代码存在. 结构如下所示 ├── examples │ ├── darknet.c(主程序 ...

  10. linux修改history记录数

    在linux系统下.history命令会保存多少条命令呢?曾在一本书上说,如果注销系统,那么会将所有的历史命令都定入到~/.bash_history, 但只保留1000条命令(这个是由默认的shell ...