SpringBoot学习-(二十四)SpringBoot配置错误页面(404、500等)

基本步骤:

  • 添加错误页面配置
  • 书写对应action处理映射

    添加错误页面配置

package com.ahut.config;

import org.springframework.boot.context.embedded.ConfigurableEmbeddedServletContainer;
import org.springframework.boot.context.embedded.EmbeddedServletContainerCustomizer;
import org.springframework.boot.web.servlet.ErrorPage;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpStatus;

/**
 * 
 * @ClassName: ErrorPageConfig
 * @Description: 配置错误页面
 * @author cheng
 * @date 2018年4月3日 下午3:45:49
 */
@Configuration
public class ErrorPageConfig {

    @Bean
    public EmbeddedServletContainerCustomizer containerCustomizer() {
        return new EmbeddedServletContainerCustomizer() {

            @Override
            public void customize(ConfigurableEmbeddedServletContainer container) {
                ErrorPage error400Page = new ErrorPage(HttpStatus.BAD_REQUEST, "/400.html");
                ErrorPage error401Page = new ErrorPage(HttpStatus.UNAUTHORIZED, "/401.html");
                ErrorPage error404Page = new ErrorPage(HttpStatus.NOT_FOUND, "/errorPage/404");
                ErrorPage error500Page = new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/500.html");

                container.addErrorPages(error400Page, error401Page, error404Page, error500Page);
            }
        };
    }

}

书写对应action处理映射

package com.ahut.action;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.ahut.common.ApiResponse;

/**
 * 
 * @ClassName: ErrorPageAction
 * @Description: 错误页面控制器
 * @author cheng
 * @date 2018年4月3日 下午3:48:18
 */
@Controller
@RequestMapping(value = "/errorPage")
public class ErrorPageAction {

    /**
     * 日志管理
     */
    private Logger log = LoggerFactory.getLogger(ErrorPageAction.class);

    /**
     * 
     * @Title: notFound
     * @Description: 配置404
     * @return
     */
    @RequestMapping(value = "/404")
    @ResponseBody
    public ApiResponse notFound() {
        log.warn("没有找到对应的信息");
        return ApiResponse.createFailResponse("没有找到对应的信息");
    }

}

其中ApiResponse为自定义实体

package com.ahut.common;

import java.io.Serializable;

/**
 * 
 * @ClassName: ApiResponse
 * @Description: api返回结果响应实体类
 * @author cheng
 * @date 2018年4月3日 下午2:34:47
 */
public class ApiResponse implements Serializable {

    /**
     * 序列化
     */
    private static final long serialVersionUID = -5178560042946902578L;
    /**
     * 成功类型
     */
    private static final String SUCCESS_TYPE = "SUCCESS";
    /**
     * 失败类型
     */
    private static final String FAIL_TYPE = "FAIL";
    /**
     * 没有数据提示
     */
    private static final String NO_DATA = "NO DATA";
    /**
     * 成功信息
     */
    private static final String SUCCESS_MSG = "REQUEST SUCCESS";
    /**
     * 失败信息
     */
    private static final String FAIL_MSG = "REQUEST FAIL";
    /**
     * 类型
     */
    private String type;
    /**
     * 信息
     */
    private String msg;
    /**
     * 数据
     */
    private Object data;

    /**
     * 私有化构造方法
     */
    private ApiResponse() {
    }

    /**
     * 重写toString
     */
    @Override
    public String toString() {
        return "ApiResponse [type=" + type + ", msg=" + msg + ", data=" + data + "]";
    }

    /**
     * 
     * @Title: createSuccessResponse
     * @Description: 成功返回,包含信息和数据
     * @param msg
     * @param data
     * @return
     */
    public static ApiResponse createSuccessResponse(String msg, Object data) {
        ApiResponse response = new ApiResponse();
        response.setType(SUCCESS_TYPE);
        response.setMsg(msg);
        response.setData(data);
        return response;
    }

    /**
     * 
     * @Title: createSuccessResponse
     * @Description: 成功返回,只包含信息
     * @param msg
     * @return
     */
    public static ApiResponse createSuccessResponse(String msg) {
        return createSuccessResponse(msg, NO_DATA);
    }

    /**
     * 
     * @Title: createSuccessResponse
     * @Description: 成功返回,只包含数据
     * @param data
     * @param clazz
     * @return
     */
    public static ApiResponse createSuccessResponse(Object data, Class clazz) {
        return createSuccessResponse(SUCCESS_MSG, data);
    }

    /**
     * 
     * @Title: createFailResponse
     * @Description: 失败返回,包含信息和数据
     * @param msg
     * @param data
     * @return
     */
    public static ApiResponse createFailResponse(String msg, Object data) {
        ApiResponse response = new ApiResponse();
        response.setType(FAIL_TYPE);
        response.setMsg(msg);
        response.setData(data);
        return response;
    }

    /**
     * 
     * @Title: createFailResponse
     * @Description: 失败返回,只包含信息
     * @param msg
     * @return
     */
    public static ApiResponse createFailResponse(String msg) {
        return createFailResponse(msg, NO_DATA);
    }

    /**
     * 
     * @Title: createFailResponse
     * @Description: 失败返回,只包含数据
     * @param data
     * @param clazz
     * @return
     */
    public static ApiResponse createFailResponse(Object data, Class clazz) {
        return createFailResponse(FAIL_MSG, data);
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }

}

你可能感兴趣的:(SpringBoot)