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

+ Recent posts