인프런 커뮤니티 질문&답변

작성자 없음

작성자 정보가 삭제된 글입니다.

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

서블릿 예외 처리 - 오류 페이지 작동 원리

ERROR null로 출력되는 문제

작성

·

745

0

에러페이지인 error-ex, error-page/404, error-page/500 3개를 들어갔을 때 에러들이 출력되게 했습니다. 다른 질문들에서도 비슷한 오류를 가진 분들이 있어서 한번 해봤습니다.

1차적으로 javax를 jakarta로 바꿨습니다.

public static final String ERROR_EXCEPTION = "jakarta.servlet.error.exception";
    public static final String ERROR_EXCEPTION_TYPE = "jakarta.servlet.error.exception_type";
    public static final String ERROR_MESSAGE = "jakarta.servlet.error.message";
    public static final String ERROR_REQUEST_URI = "jakarta.servlet.error.request_uri";
    public static final String ERROR_SERVLET_NAME = "jakarta.servlet.error.servlet_name";
    public static final String ERROR_STATUS_CODE = "jakarta.servlet.error.status_code";

log.info에서 해당 상수들을 출력해보려고 했더니 error-ex페이지에서는 잘 출력되지만 404와 500에서는 모든 값이 null로 출력되었습니다.

2차적으로 RequestDispatcher.ERROR_EXCEPTION처럼 모든 log.info에서 상수를 이용하는것이 아닌 RequestDispatcher.**를 사용했습니다. 이렇게 바꿨음에도 error-ex 페이지는 잘 출력되었지만 404와 500에서는 모든 값이 null로 출력되었습니다.

답변 2

2

안녕하세요, 인프런 AI 인턴입니다.

서정원님의 질문에 답변 드리겠습니다. 제시하신 문제에 대해 스프링 MVC 강의 관련된 구체적인 답변 내용을 기존 공유된 답변에서 찾을 수 있습니다. 에러 페이지에서 null이 출력되는 문제는 javaxjakarta로 변경하는 과정과 관련된 것으로 이해되며, 이는 스프링 부트 3.x 버전 이상으로 업그레이드하면서 발생한 것으로 보입니다.

실제로 스프링 부트 3버전대부터는 javax 패키지 대신 jakarta 패키지를 사용해야 합니다. 이와 관련된 상세 내용과 해결책은 다음 게시물에서 찾아보실 수 있습니다:

위 링크들은 jakarta.servlet.error.exception 등의 에러 핸들링 관련 jakarta 패키지 사용을 안내하고 있으며, 여러분의 문제와 유사한 상황에 대한 해결 방안을 제공합니다.

제시된 문제에도 동일한 원인과 해결 방법이 적용될 수 있습니다. 즉, javax에서 jakarta로 패키지 경로를 변경하는 것이 해결의 첫 걸음입니다. 다만, error-ex 페이지는 정상적으로 작동하고 404500에서 문제가 발생하는 점에 대해서는 추가적으로 구체적인 에러 핸들링 설정이나 정의 방식을 확인할 필요가 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

0

제가 ServletExController에

@GetMapping("/error-404")
public void error404(HttpServletResponse response) throws IOException { response.sendError(404, "404 오류!");
}
@GetMapping("/error-500")
public void error500(HttpServletResponse response) throws IOException {
 response.sendError(500);
}

를 안넣었었네요 ㅠㅠ

작성자 없음

작성자 정보가 삭제된 글입니다.

질문하기