1. 예외 처리
▷ 웹 애플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비정상적인 종료를 막을 수 있음
◎ 예외 처리 방법의 종류
2. page 디렉티브 태그를 이용한 예외 처리
◎ errorPage 속성으로 오류 페이지 호출하기
▷ errorPage 속성
▶ 오류 페이지를 호출하는 page 디렉티브 태그의 속성
▷ JSP 페이지가 실행되는 도중에 오류가 발생하면 웹 서버의 기본 오류 페이지를 대신하여 errorPage 속성에 설정한 페이지가 오류 페이지로 호출
◎ errorPage 속성을 이용한 오류 페이지 호출
1. errorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page errorPage="errorPage_error.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> name 파라미터 : <%=request.getParameter("name").toUpperCase() %> </body> </html>
2. errorPage_error.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> 오류가 발생하였습니다. </body> </html>
errorPage.jsp에서 코드를 실행시키면 '오류가 발생하였습니다.' 라는 화면이 나타납니다.
여기서 name의 parameter 값을 받아오려고 했지만 찾을 수 없기 때문에 error가 나타납니다.
따라서 errorPage_error.jsp의 화면이 실행됩니다.
◎ isErrorPage 속성으로 오류 페이지 만들기
▷ isErrorPage 속성
▶ 현재 JSP 페이지를 오류 페이지로 호출하는 page 디렉티브 태그의 속성
▶ 이때 오류 페이지에서 exception 내장 객체를 사용할 수 있음
◎ isErrorPage 속성을 이용하여 오류 페이지 만들기
1. isErrorPage.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page errorPage="isErrorPage_error.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> name 파라미터 : <%=request.getParameter("name").toUpperCase() %> </body> </html>
2. isErrorPage_error.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> <p>오류가 발생하였습니다. <p> 예외 유형 : <%=exception.getClass().getName() %> <p> 오류 메시지 : <%=exception.getMessage() %> </body> </html>
isErrorPage.jsp에서 코드를 실행시키면 아래와 같은 화면이 나타납니다.
위의 예제와 동일하게 name의 parameter 값을 받아오려고 했지만 찾을 수 없기 때문에 error가 나타납니다.
따라서 isErrorPage_error.jsp의 화면이 실행됩니다.
◎ errorPage와 isErrorPage 속성을 이용하여 예외 처리하기
1. exception.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> <form action="exception_process.jsp" method="post"> <p> 숫자1 : <input type="text" name="num1"> <p> 숫자2 : <input type="text" name="num2"> <input type="submit" value="나누기"> </form> </body> </html>
아래와 같은 화면이 출력됩니다.
2. exception_process.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page errorPage="exception_error.jsp" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> <% String num1 = request.getParameter("num1"); String num2 = request.getParameter("num2"); int a = Integer.parseInt(num1); int b = Integer.parseInt(num2); int c = a / b; out.print(num1 + " / " + num2 + " = " + c); %> </body> </html>
결과 화면으로 '12 / 6 = 2' 가 나타납니다.
3. exception_error.jsp<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page isErrorPage="true" %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Exception</title> </head> <body> <p>오류가 발생하였습니다. <p> 에외 : <%= exception %> <p> toString() : <%= exception.toString() %> <p> getClass().getName() : <%=exception.getClass().getName() %> <p> getMessage() : <%=exception.getMessage() %> </body> </html>
만약 숫자 2가 0이라면 error가 발생하게 되며 아래와 같은 화면이 나타납니다.
예외 처리는 웹 애플리케이션 실행 도중에 발생할 수 있는 오류에 대비한 예외 처리 코드를 작성하여 비정상적인 종료를 막을 수 있게 만들어줍니다.
따라서 오류창이 나타나기 보다는 해당 오류가 발생하면 지정한 페이지로 되돌려 줍니다.
에러 처리를 잘하면 어떤 부분에서 문제가 발생했는지 알 수 있겠네요~~
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
'BackEnd > JSP' 카테고리의 다른 글
[JSP 웹 프로그래밍] 예외 처리 3 (try-catch-finally 이용한 예외 처리) (0) | 2023.03.08 |
---|---|
[JSP 웹 프로그래밍] 예외 처리 2 (web.xml 파일을 이용한 예외 처리) (1) | 2023.03.07 |
[JSP 웹 프로그래밍] 시큐리티 2 (프로그래밍적 시큐리티 처리) (0) | 2023.03.07 |
[JSP 웹 프로그래밍] 시큐리티 1 (선언적 시큐리티 처리) (0) | 2023.03.07 |
[JSP 웹 프로그래밍] 다국어 처리 3 (JSTL fmt 태그 2) (0) | 2023.03.07 |