일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Doit입문SQL
- 웹 브라우저 전쟁
- 우아한테크
- 자바 오류
- 숫자 형식
- 생성자
- SQL
- 크롤링
- 웹브라우저 수용도
- SQL입문
- 함수
- 배열 예제
- html
- R1C3
- 키-값 데이터베이스
- dbms
- 자바
- DoitSQL
- 데이터베이스
- 예외
- 함수 선언
- 숫자형식오류
- 크롤링 오류
- 페이지분석
- HTML역사
- 배열 3요소
- DoitSQL입문
- DoIt
- 자바 예외
- 예제
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- Doit입문SQL
- 웹 브라우저 전쟁
- 우아한테크
- 자바 오류
- 숫자 형식
- 생성자
- SQL
- 크롤링
- 웹브라우저 수용도
- SQL입문
- 함수
- 배열 예제
- html
- R1C3
- 키-값 데이터베이스
- dbms
- 자바
- DoitSQL
- 데이터베이스
- 예외
- 함수 선언
- 숫자형식오류
- 크롤링 오류
- 페이지분석
- HTML역사
- 배열 3요소
- DoitSQL입문
- DoIt
- 자바 예외
- 예제
- Today
- Total
프로그래밍
[Spring] day70 : 예외 발생 처리 페이지 본문
2023.08.18.금
예외 발생 처리 페이지
예외 발생시 처리하는데에는 대표적으로 2가지 방식이 있다
첫 번째로는 JAVA 로직으로 예외 발생시 화면이 넘어가지 않도록 하는 것이고
두 번째로는 NULL을 VIEW에서 보여줘야한다면 JSTL을 활용하여 특정 문구가 나오게 처리하는 것이다
기존에 JSP 방식으로 예뢰 발생 처리 페이지를 작성하였었는데
이를 Spring 방식으로 작성해보자
JSP 에러페이지 방식
2023.07.31 - [Web] - [Web] day38 : 에러페이지
Spring 방식으로 예외 발생 처리 페이지 구현하기
.xml (설정파일) 방식과 @(어노테이션) 방식 중
.xml 방식으로 구현해보도록 하자
Spring에서는 예외발생시 자동으로 처리해서
특정 페이지까지 사용자에게 도달할 수 있게 해주는 객체가 존재한다
해당 객체를 "ExceptionResolver"라고 한다
DispatcherServlet의 멤버변수이기 때문에 의존주입(DI)을 필요로 한다
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>
위의 코드를 보면 HandlerMapping과 유사한 것을 볼 수 있다
HandlerMapping: 어떤 요청에 대해 어떤 C를 반환할지 결정
> 팩토리패턴
ExceptionResolver: 어떤 예외에 대해 어떤 페이지로 가야할지 결정
> 팩토리패턴
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>
isErrorPage="true" 로 설정할시 내장객체 "exception"사용이 가능하게 된다
EL 표현식으로 해당 에러 내용을 꺼내 쓰기 위해서는 미리 등록해놔야 한다
실행화면
@으로 설정을 잘 안하는 이유?
예외 처리에 대한 어노테이션을 하려면
1. 에외를 잡아줄 클래스.java
2. 특정 페이지까지 전달을 위한 Controller 역할의 클래스 .java
2개가 필요하다
HM처럼 한번에 맵핑까지 하는게 아니라 자바를 더 많이 필요하게 된다
'자바 > Spring' 카테고리의 다른 글
[Spring] day72 : 스프링 레거시 프로젝트에서 별도의 라이브러리 없이 진행할 수 있는 비동기처리 (2) | 2023.08.22 |
---|---|
[Spring] day70 : NULL update 이슈 (1) | 2023.08.20 |
[Spring] day69 : 파일 업로드 예제 (2) | 2023.08.17 |
[Spring] day68 : JDBC Template (0) | 2023.08.17 |
[Spring] day67 : AOP 예제(+바인드 변수) (0) | 2023.08.16 |