Springboot 2.0 적응 효과 오류 응답 프로 세 스 분석
구현 효 과 는 thymeleaf 렌 더 링 페이지 에 접근 할 때 사용자 정의 오류 페이지 를 표시 합 니 다.
인터페이스 방식 으로 접근 할 때 사용자 정의 json 데이터 응답 을 표시 합 니 다.
1.사용자 정의 이상 작성
package cn.jfjb.crud.exception;
/**
* @author john
* @date 2019/11/24 - 9:48
*/
public class UserNotExistException extends RuntimeException {
public UserNotExistException() {
super(" ");
}
}
2.사용자 정의 이상 처리&맞 춤 형 제 이 슨 데 이 터 를 되 돌려 주 고/error 로 전송 하여 자가 적응 응답 효과 처리
package cn.jfjb.crud.handler;
import cn.jfjb.crud.exception.UserNotExistException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;
/**
* @author john
* @date 2019/11/24 - 10:43
*/
@ControllerAdvice
public class MyExceptionHandler {
@ExceptionHandler(UserNotExistException.class)
public String handleException(Exception e, HttpServletRequest request) {
Map<String, Object> map = new HashMap<>();
// 4xx 5xx,
/**
* Integer statusCode = (Integer) request
.getAttribute("javax.servlet.error.status_code");
*/
request.setAttribute("javax.servlet.error.status_code", 400);
map.put("code", "user.notexist");
map.put("message", e.getMessage());
// MyErrorAttributes
request.setAttribute("ext", map);
// /error
return "forward:/error";
}
}
3.맞 춤 형 데 이 터 를 가지 고 나 가기오류 가 발생 하면/error 요청 이 올 것 입 니 다.Basic ErrorController 에 의 해 처 리 됩 니 다.응답 하면 얻 을 수 있 는 데 이 터 는 getErrorAttributes 에서 얻 을 수 있 습 니 다(AbstractErrorController(ErrorController)에 규정된 방법 입 니 다).
1.ErrorController 의 실현 클래스 를 완전히 작성 하거나 AbstractErrorController 의 하위 클래스 를 작성 하여 용기 에 넣 습 니 다.
2.페이지 에 사용 할 수 있 는 데이터 나 json 이 사용 할 수 있 는 데 이 터 를 되 돌려 주 는 것 은 모두 error Attributes.getError Attributes 를 통 해 얻 을 수 있 습 니 다.
용기 에 있 는 DefaultErrorAttributes.getErrorAttributes();기본적으로 데이터 처리 하기;
사용자 정의 오류 속성
package cn.jfjb.crud.component;
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
import org.springframework.stereotype.Component;
import org.springframework.web.context.request.WebRequest;
import java.util.Map;
/**
* @author john
* @date 2019/11/24 - 12:13
*/
@Component
public class MyErrorAttributes extends DefaultErrorAttributes {
@Override
public Map<String, Object> getErrorAttributes(WebRequest webRequest, boolean includeStackTrace) {
Map<String, Object> map = super.getErrorAttributes(webRequest, includeStackTrace);
//
Map<String, Object> ext = (Map<String, Object>) webRequest.getAttribute("ext", 0);
map.put("company", "atguigu");
map.put("ext", ext);
return map;
}
}
4.application.yml 설정
server:
error:
include-exception: true
5.4xx.html 사용자 정의 오류 페이지 작성
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>4xx</title>
</head>
<body>
<h1>status:[[${status}]]</h1>
<h2>timestamp:[[${timestamp}]]</h2>
<h2>exception:[[${exception}]]</h2>
<h2>message:[[${message}]]</h2>
</body>
</html>
6.테스트
package cn.jfjb.crud.controller;
import cn.jfjb.crud.exception.UserNotExistException;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
/**
* @author john
* @date 2019/11/22 - 19:38
*/
@Controller
public class HelloController {
@RequestMapping({"/testException"})
public String testException(@RequestParam("user") String user) {
if (user != "aaa") {
throw new UserNotExistException();
}
return "index";
}
}
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.