ErrorResolver

떡ol·2022년 10월 3일
0

우리는 사이트를 이용할때 404에러 뜨면서 특정 에러페이지로 이동하는것을 흔히 볼 수 있다.
ErrorResolver 가 그러한 화면을 처리해줄수있다.

우선 ErrorResolver class 파일을 만들어주고 SimpleMappingExceptionResolver을 상속해준다

package com.resolver.ErrorResolve; //해당경로에 만들었다.

public class ErrorResolver extends SimpleMappingExceptionResolver {

	@Override
	protected void logException(Exception ex, HttpServletRequest request) {
		System.out.println("ErrorException :: "+ex);
	}

}

1. servlet-context 사용시

해당 클래스를 빈에 불러와 설정하여 사용하면 된다.

<bean class="com.resolver.ErrorResolver">
		<property name="defaultErrorView">
			<value>error/defaultPage</value>
		</property>
		<property name="defaultStatusCode">
			<value>404</value>
		</property>
		<property name="exceptionMappings">
			<props>
				<prop key="java.lang.NullPointerException">error/nullpointPage</prop>
			</props>
		</property>
		<property name="statusCodes">
			<props>
				<prop key="error/nullpointPage">999</prop>
			</props>
		</property>
	</bean>
  • defaultErrorView : 디폴트로 불러올 에러 화면 파일 위치를 작성하면된다. (파일 위치는 ViewResolver가 설정 되어있다면 해당 경로로 맞추어 작성하면 된다.)
  • defaultStatusCode : 디폴트 에러 코드를 설정한다.
  • exceptionMappings : 키값으로 여러개의 에러를 맵핑 가능하며 마찬가지로 해당하는 페이지를 셋팅해주면 된다.
  • statusCodes : 맵핑된 페이지에 에러코드를 설정한다. 에러 경로를 키 값으로 작성한다.

컨트롤 단에서 테스트할 페이지를 만들어서 호출해보면된다. (물론, 에러 jsp도 만들어 빈에 작성한 위치에 둔다.)

@RequestMapping(value = "errorTest")
	public String errorTest(HttpServletRequest request, HttpServletResponse respose) throws Exception {
			throw new NullPointerException();
			//throw new Exception("defalut");
	}

2. Java Bean Config 사용시

따로 찾아봤는데 Controller를 새로 만들어 @ExceptionHandler로 맵핑해 사용하면 될거같다.

@Controller
public class ExceptionController {

	@ExceptionHandler({NullPointerException.class, FileNotFoundException.class})
	public String npError(Exception e) {
		return "error";
	}

	@ExceptionHandler(Exception.class)
	@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // 요청값바꾸기
	public String commonError(Exception e) {
		return "error";
	}



참고자료들___
(참고) Java Config로 Exception Resolver 설정하기
(참고) Exception 예외처리

profile
하이

0개의 댓글