728x90
error.jsp 위치
web.xml
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.do</location>
</error-page>
<error-page>
<error-code>404</error-code>
<location>/error.do</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.do</location>
</error-page>
dispatcher-servlet.xml
<!---------
Spring MVC에서 발생하는 예외(Exception)를 처리하기 위한 사용자 정의 예외 처리 클래스
EgovBizException을 예로 들면 Spring MVC는 /cmmn/error라는 **뷰 이름(view name)**으로 매핑합니다.
/cmmn/error는 **뷰 이름(view name)**이며, InternalResourceViewResolver가 설정된 경우
이 이름을 사용해 실제 JSP 파일 경로를 만듭니다.
/WEB-INF/jsp/cmmn/error.jsp
--------->
<bean class="test.cmmn.ExceptionResolver">
<property name="order" value="0" />
<property name="defaultErrorView" value="/cmmn/error.jsp" />
<property name="exceptionMappings">
<props>
<prop key="org.springframework.dao.DataAccessException">/cmmn/dataAccessFailure</prop>
<prop key="org.springframework.transaction.TransactionException">/cmmn/transactionFailure</prop>
<prop key="egovframework.rte.fdl.cmmn.exception.EgovBizException">/cmmn/error</prop>
<prop key="org.springframework.security.access.AccessDeniedException">/cmmn/error</prop>
<prop key="defaultErrorView">/cmmn/error</prop>
</props>
</property>
</bean>
<!-- JSON 형식으로 데이터를 응답하기 위한 View 클래스
Spring MVC 컨트롤러에서 JSON 데이터를 직접 반환하거나, AJAX 요청 응답에 사용
-->
<bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView" id="jsonView">
<property name="contentType" value="application/json;charset=UTF-8" />
</bean>
<!-- JSP 뷰(View)를 처리하기 위한 View Resolver -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:order="2">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>
ErrorController
@Controller
public class ErrorController {
@RequestMapping("/error.do")
public String handleError(HttpServletRequest request, Model model) {
// 에러 코드 및 메시지 처리
Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
if (status != null) {
int statusCode = Integer.parseInt(status.toString());
model.addAttribute("errorCode", statusCode);
String errorMsg = (String) request.getAttribute("errorMsg");
if (errorMsg == null || errorMsg.isEmpty()) {
errorMsg = (String) request.getAttribute(RequestDispatcher.ERROR_MESSAGE);
}
model.addAttribute("errorMsg", errorMsg != null ? errorMsg : "Unknown error occurred.");
} else {
model.addAttribute("errorCode", "N/A");
model.addAttribute("errorMsg", "Unexpected error occurred.");
}
// 내부 경로의 JSP 호출
return "cmmn/error";
}
}
728x90