티스토리 뷰
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
Error 컨트롤러라고 별 다를 것 없다. 평상시 만들었던 Controller처럼 URL 별로 request mapping 메서드를 작성하고, view로 보내주면 된다.
@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이나 jsp같은 view 리소스를 작성하면 된다.
예를 들어, error 폴더 밑에 noResource.html을 작성하면, 404 에러가 발생했을 때 해당 html이 응답으로 사용자에게 보여질 것이다.
참고
'프로그래밍 > Web' 카테고리의 다른 글
webpack 정리 (0) | 2019.03.05 |
---|---|
Maven 프로젝트 나눠서 관리하기 (0) | 2019.03.05 |
Spring REST API 이미지 또는 파일을 리턴하기 (4) | 2018.08.09 |
Spring controller에서 webapp 폴더 경로 찾기 (0) | 2018.08.02 |
Spring MVC와 Dispatcher Servlet (0) | 2018.07.19 |
- Total
- Today
- Yesterday
- chunk
- Barycentric coordinates
- Linux
- unity
- MySQL
- @Component
- 클로저
- mybatis
- spring
- npm
- @Qualifier
- nodejs
- thymeleaf cannot resolve
- @Bean
- thymeleaf 변수 인식
- Tasklet
- Bin
- Bean
- spring batch
- @Autowired
- Check point within polygon
- Closure
- Express
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |