inblog logo
|
{CODE-RYU};
    SPIRNG

    [Spring] 인터셉터 활용하기 1 에러 페이지 만들기

    류재성's avatar
    류재성
    Mar 20, 2024
    [Spring] 인터셉터 활용하기 1 에러 페이지 만들기
    Contents
    1. 에러 페이지 화면 만들기2. 핸들러 만들기
     

    1. 에러 페이지 화면 만들기

     
    notion image
    err/400.mustache
    {{> /layout/header}} <div class="container my-3"> <h1>BadRequest 400</h1> <hr> <h41>{{msg}}</h41> </div> {{> /layout/footer}}
     
    err/401.mustache 인증안됨
    {{> /layout/header}} <div class="container my-3"> <h1>Unauthorized 401</h1> <hr> <h41>{{msg}}</h41> </div> {{> /layout/footer}}
     
    err/403.mustache 권한없음
    {{> /layout/header}} <div class="container my-3"> <h1>Forbidden 403</h1> <hr> <h41>{{msg}}</h41> </div> {{> /layout/footer}}
     
    err/404.mustache
    {{> /layout/header}} <div class="container my-3"> <h1>Not Found 404</h1> <hr> <h41>{{msg}}</h41> </div> {{> /layout/footer}}
     
    err/500.mustache
    {{> /layout/header}} <div class="container my-3"> <h1>Server Error 500</h1> <hr> <h41>{{msg}}</h41> </div> {{> /layout/footer}}
     

    2. 핸들러 만들기

     
    _core/err/MyExceptionHandler
    notion image
     
    모두 RundimeEception 이기 때문에 오류가 남. 그래서 커스텀익셉션을 만들어서 상속받는 구조를 만든다.
     
     
    package shop.mtcoding.blog._core.err.exception; public class Exception400 extends RuntimeException{ public Exception400(String msg) { super(msg); } }
    notion image
     
    에러 컨트롤러 및 커스텀 익셉션 만들
     
    @ControllerAdvice //runtimeException 이 터지만 해당 파일로 오류가 모인다. public class MyExeptionHandler{ @ExceptionHandler(Exception400.class) public String ex400(RuntimeException e){ request.setAttribute("msg",e.getMessage()); return "err/400"; } @ExceptionHandler(Exception401.class) public String ex401(RuntimeException e, HttpServletRequest request){ request.setAttribute("msg",e.getMessage()); return "err/401"; } @ExceptionHandler(Exception403.class) public String ex403(RuntimeException e,HttpServletRequest request){ request.setAttribute("msg",e.getMessage()); return "err/403"; } @ExceptionHandler(Exception404.class) public String ex404(RuntimeException e,HttpServletRequest request){ request.setAttribute("msg",e.getMessage()); return "err/404"; } @ExceptionHandler(Exception500.class) public String ex500(RuntimeException e,HttpServletRequest request){ request.setAttribute("msg",e.getMessage()); return "err/500"; } }
     
     
     
    @GetMapping("/user/update-form") public String updateForm(HttpServletRequest request) { User sessionUser = (User) session.getAttribute("sessionUser"); if (sessionUser == null) { throw new Exception401("인증되지 않았어요. 로그인해주세요"); } User user = userRepository.findById(sessionUser.getId()); request.setAttribute("user",user); return "user/update-form"; }
     
    notion image
    💡
    로그인 하지 않으면 401 페이지로 throw 된다.
     
     
     
     
     
    Share article

    {CODE-RYU};

    RSS·Powered by Inblog