개발

[java] 스프링 예외처리

지승준 2014. 9. 18. 16:38

Spring 의 bean 부분의 예외를 처리했다고 해도.

기본적으로 jsp 페이지 내에서 발생하는 예외는 spring 만으론 잡을수 없다.

그래서 아래와같은 방법을 썻다.


- web.xml

1
2
3
4
5
6
[code] 
<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/WEB-INF/jsp/error.jsp</location>
</error-page>
[/code]
cs


- 위와같이 error.jsp 파일을 지정한다.


- error.jsp

1
2
3
4
[code]
<%@page contentType="text/html;chraset=utf-8" isErrorPage="true"%>
<%=exception%>
[/code]
cs


- 여기서 중요한건 isErrorPage 속성을 true 로 했다는것이다.

- 이렇게 하면 request에 "javax.servlet.error.exception" 라는 attribute 가 들어있으면 

위와같이 그냥 exception 변수를 쓸수있게 된다.



- BaseExceptionResolver.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
[code]
package dic.resolver;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
 
public class BaseExceptionResolver implements HandlerExceptionResolver {
 
 private String view = null;
 public void setView(String view) {
  this.view = view;
 }
 
 public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object obj, Exception exception) {
  exception.printStackTrace();
  request.setAttribute("javax.servlet.error.exception",exception);
  return new ModelAndView(view);
 }
 
}
[/code]
cs


- 위 파일은 예전에 bean 예외를 잡기위해 만들었던 파일인데 저기다가 위와같이 request 에 

javax.servlet.error.exception 예외를 추가하면 jsp 의 errorpage 를 그대로 사용할수 있다.