转载请注明来源:
1.0 异常说明
SpringBoot搭建的接口服务。假设请求非注冊类的无效接口地址,则返回该页面。主要问题就是没有对异常请求做处理。
举例,定义有效接口地址如:, 。则其他地址均为无效地址,若请求则返回上述Whitelabel Error Page页面。
2.0 异常处理
主要是加入一个AppErrorController的Controller类,这里我定义了异常返回页面。
package com.autonavi.controller;import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.autoconfigure.web.ErrorAttributes;import org.springframework.boot.autoconfigure.web.ErrorController;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;import org.springframework.web.context.request.RequestAttributes;import org.springframework.web.context.request.ServletRequestAttributes;import org.springframework.web.servlet.ModelAndView;/** *Author: loongshawn *
Date: 16-03-17 *
Version: 1.0 */@Controllerpublic class AppErrorController implements ErrorController{
private static final Logger logger = LoggerFactory.getLogger(AppErrorController.class); private static AppErrorController appErrorController; /** * Error Attributes in the Application */ @Autowired private ErrorAttributes errorAttributes; private final static String ERROR_PATH = "/error"; /** * Controller for the Error Controller * @param errorAttributes * @return */ public AppErrorController(ErrorAttributes errorAttributes) { this.errorAttributes = errorAttributes; } public AppErrorController() { if(appErrorController == null){ appErrorController = new AppErrorController(errorAttributes); } } /** * Supports the HTML Error View * @param request * @return */ @RequestMapping(value = ERROR_PATH, produces = "text/html") public ModelAndView errorHtml(HttpServletRequest request) { return new ModelAndView("greeting", getErrorAttributes(request, false)); } /** * Supports other formats like JSON, XML * @param request * @return */ @RequestMapping(value = ERROR_PATH) @ResponseBody public ResponseEntity
这个类实现了ErrorController接口,用来处理请求的各种异常。当中定义了一个greeting的html模版,用来显示返回结果。初始化此类模版须要在pom中加入下面依赖:
org.springframework.boot spring-boot-starter-thymeleaf
这个依赖主要是给SpringBoot中载入html等类型的模版服务。其支持的模版类型例如以下:
Template modes:[THYMELEAF] * XHTML[THYMELEAF] * XML[THYMELEAF] * HTML5[THYMELEAF] * LEGACYHTML5[THYMELEAF] * VALIDXHTML[THYMELEAF] * VALIDXML
SpringBoot项目配置模版路径的方法例如以下:
1、在main的resources路径下新建templates目录
2、在templates目录中新建模版文件greeting.html
Error Pages
3.0 处理结果
无效请求地址均会返回此页面,仅仅是当中的返回值不同。