티스토리 뷰

반응형

404, 500 등 에러가 발생했을 때 처리할 페이지를 만드는 방법을 알아보겠습니다.

web.xml에 URL 매핑

에러가 발생했을 때 어떤 URL로 redirect 할 것인지 web.xml에 작성할 수 있습니다. Servlet 버전 3.0 이상이어야 이용 가능한데, 요즘엔 걱정 안해도 될 것 같습니다. 혹시라도 그 아래 버전을 사용하고 있다면 다른 방법을 찾아보겠습니다.

아래처럼 error-page 태그 하위에 어떤 에러인지, 어디로 매핑할지를 작성할 수 있습니다.

<error-page>
    <location>/errors</location>
</error-page>

위와 같이 작성하면 default로 사용할 에러 처리 URL을 만든 것입니다.

 

만약 404, 500을 따로 처리하고 싶다면 아래처럼 에러 종류와 함께 error-page 태그를 여러개 작성하면 됩니다.

<!-- Error -->
<error-page>
	<error-code>404</error-code>
	<location>/error/no-resource</location>
</error-page>

<error-page>
	<error-code>500</error-code>
	<location>/error/server-error</location>
</error-page>

<error-page>
	<location>/error</location>
</error-page>

404 에러가 발생하면, http://도메인/error/no-resource에 요청을 보내고, 

500 에러가 발생하면, http://도메인/error/server-error로 요청을 보냅니다.

만약 그 외에 다른 에러면 http://도메인/error로 요청을 보냅니다.

Controller

@Controller
@RequestMapping(path = "/error")
public class ErrorController {
	@GetMapping
	public String defaultError() {
		return "error/default";
	}

	@GetMapping("/no-resource")
	public String noResource() {
		return "error/noResource";
	}

	@GetMapping("/server-error")
	public String serverError() {
		return "error/serverError";
	}
}

View

위에 작성한 ErrorController에서 내보내는 문자열에 따라 view resolver가 view를 사용자에게 내보내므로, 그에 맞게 html view 리소스를 작성하면 됩니다.


참고

http://www.baeldung.com/custom-error-page-spring-mvc

반응형
댓글
공지사항