728x90
예외 처리 페이지
페이지의 내용을 처리하다가 예외가 발생했을 때 별다른 설정이 없다면 예외의 내용을 그대로 클라이언트에게 보여지게 됩니다.
예외 처리는 다양한 방식으로 구현할 수 있으며 JSP 방식으로는 대표적인 두 가지 방식이 있습니다.
- Java 로직으로 예외 처리
- JSTL을 활용하여 NULL 처리
기존 JSP 방식으로 처리한 내용을 Spring 방식으로 변환할 수 있습니다.
Spring 방식 예외 처리 구현
Spring에서 예외를 처리하고 특정 페이지로 떠넘기려면 ExceptionResolver를 사용할 수 있습니다. ExceptionResolver는 Spring의 예외 처리 중 하나로, 예외가 발생할 때 어떤 예외를 처리할 클래스 및 예외가 발생했을 때 사용자를 특정 페이지로 리디렉션하도록 설정할 수 있습니다.
DispatcherServlet-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">
<context:component-scan base-package="com.spring.view.controller" />
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="-1" />
</bean>
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="java.lang.ArithmeticException">error/error.jsp</prop>
<prop key="java.lang.NullPointerException">error/error.jsp</prop>
</props>
</property>
<property name="defaultErrorView" value="error/error.jsp" />
</bean>
</beans>
DispatcherServlet-servlet.xml
ExceptionResolver는 DispatcherServlet의 멤버변수이기 때문에 의존 주입(DI)이 필요합니다.
error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>에러페이지</title>
</head>
<body>
<h1>${exception}</h1>
<h3>${exception.message}</h3>
<hr>
<a href="main.do">메인으로 돌아가기</a>
</body>
</html>
error.jsp
isErrorPage="true"로 설정된 JSP 페이지에서 내장 객체인 exception을 사용하려면 EL표현식으로 해당 에러 내용을 꺼내 사용할 수 있습니다.
GitHub
https://github.com/Qkrwnsgus0522/Spring
728x90