안녕하세요. 각성한 데브키라입니다. 에러 페이지 설정은 웹 애플리케이션의 사용자 경험을 향상시킬 수 있는 중요한 요소입니다. Spring Boot는 기본적으로 내장된 오류 페이지를 제공합니다. 하지만 이를 커스텀 페이지로 변경하여 더 친근하고 유용한 정보를 제공할 수 있습니다.
이 포스팅에서는 500(내부 서버 오류) 및 404(페이지를 찾을 수 없음) 에러 발생 시, 500.jsp와 404.jsp 페이지를 출력하는 방법을 설명합니다.
1. 프로젝트 구조 설정
먼저 Spring Boot 프로젝트의 구조는 다음과 같아야 합니다.
src/
└── main/
├── java/
│ └── com.example.demo/
│ └── DemoApplication.java
└── resources/
├── templates/
│ ├── 404.jsp
│ └── 500.jsp
└── application.properties
위와 같이 src/main/resources/templates 폴더에 404.jsp와 500.jsp 파일을 추가합니다. 이 두 파일은 각 에러 상황에 맞는 내용을 표시하는 페이지입니다.
2. 커스텀 에러 페이지 작성하기
404.jsp와 500.jsp 파일을 작성합니다. 각 파일의 내용은 다음과 같습니다.
404.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>Page Not Found</title>
</head>
<body>
<h1>404 - Page Not Found</h1>
<p>요청하신 페이지를 찾을 수 없습니다.</p>
</body>
</html>
500.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>Internal Server Error</title>
</head>
<body>
<h1>500 - Internal Server Error</h1>
<p>서버에서 오류가 발생했습니다. 잠시 후 다시 시도해주세요.</p>
</body>
</html>
3. ErrorController 구현하기 (선택 사항)
Spring Boot는 ErrorController를 구현하여 에러 페이지를 더욱 세부적으로 제어할 수 있습니다. 아래와 같이 CustomErrorController 클래스를 만들어 404와 500 에러에 맞는 페이지를 표시하도록 합니다.
import org.springframework.boot.web.servlet.error.ErrorController;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
@Controller
public class CustomErrorController implements ErrorController {
@RequestMapping("/error")
public String handleError(HttpServletRequest request) {
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
int statusCode = Integer.parseInt(status.toString());
if (statusCode == 404) {
return "404";
} else if (statusCode == 500) {
return "500";
}
}
return "error"; // 기본 에러 페이지 설정
}
public String getErrorPath() {
return "/error";
}
}
- @RequestMapping("/error"): 에러가 발생하면 /error 경로로 요청을 리다이렉트하고, 상태 코드를 확인하여 각각 404와 500 JSP 페이지로 리턴합니다.
- 404.jsp와 500.jsp는 src/main/resources/templates에 있어야 Spring이 이를 JSP로 렌더링할 수 있습니다.
4. application.properties 설정
Spring Boot에서 커스텀 에러 페이지를 사용하려면 기본 오류 페이지를 비활성화하고, 에러 경로를 지정합니다. application.properties에 다음 설정을 추가합니다.
server.error.whitelabel.enabled=false # 기본 오류 페이지 비활성화
server.error.path=/error # 에러 경로 설정
이 설정을 통해 Spring Boot의 기본 Whitelabel 에러 페이지를 비활성화하고 /error 경로로 커스텀 에러 페이지가 호출되도록 합니다.
5. 테스트
이제 애플리케이션을 실행하여 404와 500 에러를 테스트할 수 있습니다.
404 에러 테스트
존재하지 않는 URL로 접근하여 404 에러가 발생하도록 합니다. 예를 들어, http://localhost:8080/nonexistent 같은 잘못된 경로에 접근하면 404.jsp 페이지가 표시됩니다.
500 에러 테스트
간단한 500 에러를 유발하려면 특정 컨트롤러에서 NullPointerException을 발생시키는 코드를 작성할 수 있습니다. 예를 들어:
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class TestController {
@GetMapping("/test500")
public String test500() {
String nullString = null;
return nullString.toString(); // NullPointerException 발생
}
}
위의 /test500 경로에 접근하면 NullPointerException이 발생하여 500.jsp 페이지가 표시됩니다.
마무리
이제 Spring Boot 애플리케이션에서 커스텀 404 및 500 에러 페이지를 사용하여 더 나은 사용자 경험을 제공할 수 있습니다. 이번 포스팅에서는 간단한 설정으로 에러 페이지를 커스터마이징 하는 방법을 알아보았습니다.
'JAVA' 카테고리의 다른 글
Error: Spring boot 500에러에 관하여 (0) | 2024.11.04 |
---|---|
이클립스 최초 실행 후 다이나믹 웹프로젝트에서 html파일 출력하기 (2) | 2024.07.23 |
자바 개발을 위한 이클립스 설치 (1) | 2024.07.23 |
자바 JDK 설치 및 환경변수 설정 가이드 (146) | 2024.05.30 |