메모장

Spring 예외 처리 페이지 본문

Spring/개념정리

Spring 예외 처리 페이지

Itchild 2024. 8. 7. 13:18
728x90
반응형

 

예외가 발생했을때 , 사용자에게 보여줄 페이지를 정하는 방법이 여러가지가 있지만

그 중 대표적인 것 두가지가 있다.

1. 개발자가 처리하기

 

로직으로 예외발생시 화면이 넘어가지 않게 처리하는 방법 >> JAVA

또는

null 을 view에서 보여줘야 한다면 특정문구가 나오게 처리 >> JSTL로 <c:if> 조건문으로 유효성 검사

--->>> 규모가 있는 회사들은 상황 마다 이런 방식으로 많이 쓴다. 확실하게 상황마다 유효성 검사를 진행한다.

 

우리도 유효성을 검사를 철저히 해야 하는 이 방법을 써야 한다.

다른 방법도 있으니 알아보자

 

 

 

2. Spring 한테 떠넘기기 << 다른 방법도 있다. 이 방법에 대한 설명

 

 

비교적 간단한것은 Spring 떠넘기기 !

이것또한 .xml 방식과 @ 방식이 있다.

① .xml 설정 (에러페이지 처리는 이것을 더 많이 사용)

출처 입력

Spring 한테 예외 발생시

자동으로 처리해서 특정 페이지 까지 사용자가 도달할 수 있게 해주는 객체가 존재한다.

그 객체의 이름 : ExceptionResolver

DS 의 멤버변수 겠구나 ! 라고 생각 할 수 있다.

DS의 멤버변수 니까 DS-servlet.xml에 <bean> 한테 의존 주입

 

어 ? HM 이랑 비슷 하네 ? 라고 파악 할 수 있다.

handler.SimpleMapping 있다는 점에서 HM 과 비슷하다는 점 을 알 수 있다.

 

HM어떤 요청에 대해 어떤 controller 객체를 반환할지 결정하는 친구

그래서 팩토리 패턴을 갖고 있다.

exception Resolver : 어떤 예외에 대해 어떤 페이지로 가야할지 결정

얘도 내부적으로 팩토리 패턴을 가지고 있다.

 

exceptionMappings 이 무엇에 대해 무엇을 할거야 니까

nullpointerException 에 대해 에러페이지로 가줘

에러페이지는 폴더로

 

어떤 예외에 대해 어디로 가야할지를 정해준다.

webapp 안에 에러폴더 안에 에러페이지를 만들어 줬다.

<%@ 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>  <!-- exception 만 쓰면 에러 메세지도 같이 나온다 -->
<h3>${exception.message}</h3>
<hr>

<a href="main.do">메인으로 돌아가기</a>

</body>
</html>
 

${} el식에서 exception 이라는 객체를 사용하고 싶으면

위에 isErrorPage="true" 이게 중요 ★★★

이걸 true로 해놔야 쓸 수 있다. 설정해놔야

 


 

DS 서블릿에서 예외를 등록을 안한 예외가 발생할 수도 있음 !

혹시 프로퍼티 등록을 안한 예외가 있다면 어디 페이지로 가라 라고 정해줄수 있다.

 


★ 완료 화면 ★

아이디가 qqq 일때 에러 발생

 

 


 

 

② @ 설정 ( 유지보수 불리 )

 

@으로 설정 하려면 , ".java" 가 필요하다.

그러면 , 예외를 잡아줄 클래스.java가 필요하고,

얘를 어디로 보내줄 컨트롤러 역할 을 해줄

특정페이지까지 전달을 위한 (controller역할의 ) 클래스. java 도 필요

점점 자바 파일이 많아지고 컴파일을 해야해서 유지보수에 불리하다.

 

 

 

728x90
반응형