5 익셉션 처리.

Slides:



Advertisements
Similar presentations
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
Advertisements

11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
11 JSTL 사용하기.
4 서블릿의 라이프 사이클.
10. 예외 처리.
Introduction to Servlets
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
IntArray[0] int length 5 intArray 객체 제 3 장 반복문, 배열, 예외처리.
2 서블릿의 기초.
Internet Computing KUT Youn-Hee Han
12장. JSP에서 자바빈 활용 제12장.
제 4장 문 장 배정문 혼합문 제어문 표준 입출력.
12 커스텀 액션.
제6장 제어(Control) 6.1 구조적 프로그래밍(Structured Programming)
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
9 표준 액션.
자바 서버 API와 서블릿 데이타베이스 실험실 이찬섭, 박용문.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
10장. 에러 처리 제10장.
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
Internet Computing KUT Youn-Hee Han
11 필터와 래퍼.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
음악 재생 프로그램 예외 처리 방법 try/catch 블록 예외 선언 방법
[ 단원 08 ] 예외처리와 스레드.
1. JSP(Java Server Pages) 소개
메소드 호출과 힙 원격 메소드 호출 서블릿 엔터프라이즈 자바 빈즈
3 JSP의 기초.
7 JSP의 기초.
8장 자바 입출력.
4 쿠키와 세션.
1강 01장. 웹과 자바.
13 설계 모델과 웹 템플릿.
6장. JSP 지시문 (Directives) 제6장.
중 간 고 사 (웹프로그래밍)
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
Chap07 예외 처리 7.1 예외의 개요 7.2 예외 관련 클래스 7.3 예외 처리.
Hadoop 김연왕
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
JSP Programming with a Workbook
[INA240] Web Programming Homework #3 [INA240] Web Programming
JSP 내장 객체 JSP에서 기본으로 사용할 수 있는 내장 객체 종류를 알아본다. 내장 객체별 주요 기능과 메서드를 이해한다.
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
주소록 프로그램.
웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다
Network Programming(1)
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
JDBC (Java Database Connectivity)
9장 JSP페이지의 에러처리 이장에서 배울 내용 : JSP페이지에서 에러를 처리하는 방법에 대해 학습해본다. 에러페이지를 사용한 에러처리의 문제점을 살펴보고, 현재 JSP2.0에서 권장하는 에러 처리 형태인 에러코드별 에러처리를 하는 방법에 대해 학습한다.
Web Socket.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
JSP Programming with a Workbook
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
컴퓨터공학실습(I) 3주 인공지능연구실.
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
Internet Computing KUT Youn-Hee Han
자바 5.0 프로그래밍.
Internet Computing KUT Youn-Hee Han
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
JVM의 구조와 메모리 모델 JVM의 내부 구조 클래스 파일 클래스 로더 메소드(method) 영역 힙(heap) 영역
6 쿠키와 세션.
Chapter8 : 인터페이스와 패키지 8.1 인터페이스 개요와 인터페이스 정의 8.2 인터페이스의 사용
Presentation transcript:

5 익셉션 처리

학습목표 웹 컴포넌트 실행 중에 발생하는 에러를 익셉션이라고 부른다. 이번 장에 서 웹 컴포넌트에서 발생하는 익셉션의 처리 방법을 배워 보자. 내용 웹 컴포넌트에서 발생하는 익셉션 처리 에러 페이지 만들어서 호출하기 web.xml 파일에 에러 페이지 등록하기

1. 웹 컴포넌트에서 발생하는 익셉션 처리 스탠드얼론 프로그램과 웹 컴포넌트에서의 익셉션 처리 방법 웹 서버와 무관하게 독립적으로 작동하는 스탠드얼론 프로그램에서는 try문을 이용해서 익셉션을 처리한다. [예제5-1] 두 수를 더하는 스탠드얼론 프로그램 public class Adder { public static void main(String args[]) { try { int num1 = Integer.parseInt(args[0]); int num2 = Integer.parseInt(args[1]); int result = num1 + num2; System.out.printf( “%d + %d = %d ”, num1, num2, result); } catch (NumberFormatException e) { System.out.println( “잘못된 데이터가 입력되었습니다. ”);

1. 웹 컴포넌트에서 발생하는 익셉션 처리 스탠드얼론 프로그램과 웹 컴포넌트에서의 익셉션 처리 방법 [예제5-2] 두 수를 더하는 서블릿 클래스 - 잘못된 구조 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class AdderServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); response.setContentType( “text/html;charset=euc-kr ”); PrintWriter out = response.getWriter(); try { int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 + num2; out.println( “<HTML> ”); out.println( “<HEAD><TITLE>덧셈 프로그램</TITLE></HEAD> ”); out.println( “<BODY> ”); out.printf( “%d + %d = %d ”, num1, num2, result); out.println( “</BODY> ”); out.println( “</HTML> ”); } catch (NumberFormatException e) { out.println( “<HEAD><TITLE>덧셈 프로그램 - 에러 화면</TITLE></HEAD> ”); out.println( “잘못된 데이터가 입력되었습니다. ”);

1. 웹 컴포넌트에서 발생하는 익셉션 처리 스탠드얼론 프로그램과 웹 컴포넌트에서의 익셉션 처리 방법 [예제5-3] 두 수를 더하는 JSP 페이지 - 잘못된 구조 <%@page contentType= “text/html; charset=euc-kr ”%> <% try { String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 + num2; %> <HTML> <HEAD><TITLE>덧셈 프로그램</TITLE></HEAD> <BODY> <%= num1 %> + <%= num2 %> = <%= result %> </BODY> </HTML> } catch (NumberFormatException e) { <HEAD><TITLE>덧셈 프로그램 - 에러 화면</TITLE></HEAD> 잘못된 데이터가 입력되었습니다.

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [예제5-4] 두 수를 더하는 JSP 페이지 <%@page contentType= “text/html; charset=euc-kr ”%> <% int num1 = 0, num2 = 0, result = 0; try { String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); num1 = Integer.parseInt(str1); num2 = Integer.parseInt(str2); result = num1 + num2; } catch (NumberFormatException e) { RequestDispatcher dispatcher = request.getRequestDispatcher( “DataError.jsp ”); dispatcher.forward(request, response); %> <HTML> <HEAD><TITLE>덧셈 프로그램</TITLE></HEAD> <BODY> <%= num1 %> + <%= num2 %> = <%= result %> </BODY> </HTML>

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [예제5-5] 잘못된 데이터가 입력되었을 때 호출되는 에러 페이지 <%@page contentType= “text/html; charset=euc-kr ”%> <HTML> <HEAD><TITLE>덧셈 프로그램 - 에러 화면</TITLE></HEAD> <BODY> 잘못된 데이터가 입력되었습니다. </BODY> </HTML> [그림 5-4]를 호출하면서 URL 뒤에 데이터를 직접 쓰세요 정상적인 결과 이번에는 입력 데이터 중 하나를 수치가 아닌 값으로 쓰세요 에러가 발생했을 때의 결과 [그림 5-1] 예제 5-4, 5-5의 실행 결과

<%@page errorPage= “DataError.jsp ” %> 2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 익셉션을 발생하는 JSP 페이지에서 page 지시자에 errorPage 애트리뷰트를 쓰고 URL 경로명을 지정해 놓으면, JSP 페이지 안에서 익셉션이 발생했을 때 그 URL 경로명 위치 에 있는 웹 자원이 호출된다. 애트리뷰트에 다음과 같은 값을 써 놓으면 에러가 발생했을 때 같은 디렉터리에 있는 DataError.jsp가 호출 된다. <%@page errorPage= “DataError.jsp ” %> 에러 페이지의 URL 경로명

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [예제5-6] 두 수를 더하는 JSP 페이지 – page 지시자의 errorPage 애트리뷰트 사용 <%@page contentType= “text/html; charset=euc-kr ” errorPage= “DataError.jsp ” %> <% String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 + num2; %> <HTML> <HEAD><TITLE>덧셈 프로그램</TITLE></HEAD> <BODY> <%= num1 %> + <%= num2 %> = <%= result %> </BODY> </HTML>

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 exception 내장 변수를 사용하기 위해 먼저 해야 할 일: JSP 페이지에는 기본적으로 exception 내장 변수가 생기지 않기 때문에, page 지시자에 isErrorPage라는 애트리뷰트 를 쓰고 true 값을 지정해야 한다. exception 내장 변수는 일반 자바 프로그램에서 익셉션 객체를 표현할 때 사용하는 것과 동일한 java.lang.Throwable 클래스 타입이기 때문에, 이 내장 변수에 대해 getMessage 메서드를 호출하면 에러 메시지를 가져올 수 있다. <%@page isErrorPage= “true ” %> exception 내장 변수가 생기도록 만드는 애트리뷰트 값 String message = exception.getMessage(); 에러 메시지를 가져오는 메서드

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [예제5-7] 잘못된 입력 데이터를 처리하는 에러 페이지 - 미완성 <%@page contentType= “text/html; charset=euc-kr” isErrorPage= “true” %> <HTML> <HEAD><TITLE>덧셈 프로그램 - 에러 화면</TITLE></HEAD> <BODY> 잘못된 데이터가 입력되었습니다. <BR><BR> 상세 에러 메시지: <%= exception.getMessage() %> </BODY> </HTML>

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [그림 5-3] 예제 5-6, 5-7의 실행 결과(1) [그림 5-3] 예제 5-6, 5-7의 실행 결과(2)

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [그림 5-4]는 웹 브라우저에 내장되어 있는 에러 표시용 웹 페이지이며, 이런 결과가 나 오는 이유는 [예제 5-7]이 생성한 HTML 문서와 함께 웹 브라우저로 전달된 HTTP 상 태 코드 때문이다. HTTP 상태 코드란 HTTP 응답 메시지의 시작 행에 표시되는 3자리의 숫자인데, 메시지 에 포함된 HTML 문서가 정상적인 실행의 결과인지 에러 발생의 결과인지 구분하는 역 할을 한다.

2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 [그림 5-5] HTTP 응답 메시지의 상태 코드

response.setStatus(200); 2. 에러 페이지 만들어서 호출하기 JSP 페이지에서 에러 페이지 호출하기 웹 브라우저는 상태 코드 값이 500이면 HTTP 응답 메시지에 포함된 HTML 문서의 내 용을 무시하고 웹 브라우저 자체에 내장된 에러 메시지를 출력한다. 인위적으로 HTTP 상태 코드의 값을 200으로 바꿔주기 위해서는 response 내장 변수에 대해 setStatus라는 메서드를 호출하면서 200이라는 파라미터값을 넘겨주면 된다. response.setStatus(200); HTTP 상태 코드 [예제5-8] 잘못된 입력 데이터를 처리하는 에러 페이지 - 완성 <%@page contentType= “text/html; charset=euc-kr” isErrorPage= “true ” %> <% response.setStatus(200); %> <HTML> <HEAD><TITLE>덧셈 프로그램 - 에러 발생</TITLE></HEAD> <BODY> 잘못된 데이터가 입력되었습니다. <BR><BR> 상세 에러 메시지: <%= exception.getMessage() %> </BODY> </HTML>

2. 에러 페이지 만들어서 호출하기 서블릿 클래스에서 에러 페이지 호출하기 [예제5-9] 두 수를 더하는 서블릿 클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class NewAdderServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { try { String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 + num2; response.setContentType( “text/html;charset=euc-kr ”); PrintWriter out = response.getWriter(); out.println( “<HTML> ”); out.println( “<HEAD><TITLE>덧셈 프로그램</TITLE></HEAD> ”); out.println( “<BODY> ”); out.printf( “%d + %d = %d ”, num1, num2, result); out.println( “</BODY> ”); out.println( “</HTML> ”); } catch (NumberFormatException e) { RequestDispatcher dispatcher = request.getRequestDispatcher( “data-error ”); dispatcher.forward(request, response);

2. 에러 페이지 만들어서 호출하기 서블릿 클래스에서 에러 페이지 호출하기 [예제5-10] 에러 메시지를 출력하는 서블릿 클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class DataErrorServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { response.setContentType( “text/html;charset=euc-kr ”); PrintWriter out = response.getWriter(); out.println( “<HTML> ”); out.println( “<HEAD><TITLE>덧셈 프로그램 - 에러 화면</TITLE></HEAD> ”); out.println( “<BODY> ”); out.println( “잘못된 데이터가 입력되었습니다. ”); out.println( “</BODY> ”); out.println( “</HTML> ”); return; }

2. 에러 페이지 만들어서 호출하기 서블릿 클래스에서 에러 페이지 호출하기 [그림 5-6] 예제 5-9 예제 5-10의 설치 및 등록 방법

2. 에러 페이지 만들어서 호출하기 서블릿 클래스에서 에러 페이지 호출하기 ①[그림 5-9]를 호출하면서 URL 뒤에 데이터를 직접 쓰세요. ②입력 데이터 중 하나를 수치가 아닌 값으로 쓰세요.

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 web.xml 파일에는 타입별로 에러 페이지를 등록해 놓을 수 있다. 그 web.xml 파일이 속 하는 웹 애플리케이션 디렉터리 안에서 해당 타입의 익셉션이 발생하면 자동으로 등록 된 에러 페이지가 호출된다. web.xml 파일의 루트 엘리먼트인 <web-app> 엘리먼트 안에 <error-page>라는 서브엘리 먼트를 쓰고, 다시 그 안에 <exception-type>과 <location>이라는 두 개의 서브엘리먼트 를 쓴다. 익셉션의 타입 <web-app ... > ... <error-page> <exception-type>java.lang.NumberFormatException</exception-type> <location>/NumberFormatError.jsp</location> </error-page> </web-app> 에러 페이지의 URL 경로명

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 [예제5-11] 두 수의 곱을 구하는 JSP 페이지 – java.lang.NumberFormatException 발생 가능 <%@page contentType= “text/html; charset=euc-kr ”%> <% String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 * num2; %> <HTML> <HEAD><TITLE>곱셈 프로그램</TITLE></HEAD> <BODY> <%= num1 %> * <%= num2 %> = <%= result %> </BODY> </HTML>

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 [예제5-12] 두 수의 몫을 구하는 JSP 페이지 – java.lang.NumberFormatException 발생 가능 <%@page contentType= “text/html; charset=euc-kr ”%> <% String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 / num2; %> <HTML> <HEAD><TITLE>나눗셈 프로그램</TITLE></HEAD> <BODY> <%= num1 %> / <%= num2 %> = <%= result %> </BODY> </HTML>

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 예제 5-11, 12, 13을 brain05 웹 애플리케이션 디렉터리에 각각 Multiplyer.jsp Divider.jsp, NumberFormatError.jsp라는 이름으로 저장한다. brain05 웹 애플리케이션 디렉터리의 WEB-INF 서브디렉터리로 가서 web.xml파일을 열 고 <error-page> 엘리먼트를 추가한다. [예제5-13] java.lang.NumberFormatException이 발생했을 때 호출되는 에러 페이지 <%@page contentType=“text/html; charset=euc-kr” isErrorPage=“true ” %> <% response.setStatus(200); %> <HTML> <HEAD><TITLE>숫자 포맷 에러</TITLE></HEAD> <BODY> 숫자 포맷이 잘못되었습니다. <BR><BR> 상세 에러 메시지: <%= exception.getMessage() %> </BODY> </HTML>

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 ①[예제 5-11]을 실행하면서 입력 데이터 중 하나를 수치가 아닌 값으로 쓰세요. ②[예제 5-12]을 실행하면서 입력 데이터 중 하나를 수치가 아닌 값으로 쓰세요

[그림 5-11] web.xml 파일에 여러 개의 에러 페이지를 등록하는 방법 익셉션 타입별로 에러 페이지를 등록하는 방법 web.xml 파일에는 여러 타입의 익셉션에 대한 에러 페이지를 함께 등록할 수도 있다. 새로 추가한 <error-page> 엘리먼트 [그림 5-11] web.xml 파일에 여러 개의 에러 페이지를 등록하는 방법 [예제5-14] java.lang.ArithmeticException이 발생했을 때 호출되는 에러 페이지 <%@page contentType=“text/html; charset=euc-kr” isErrorPage=“true” %> <% response.setStatus(200); %> <HTML> <HEAD><TITLE>산술 연산 에러</TITLE></HEAD> <BODY> 산술 연산 도중에 에러가 발생했습니다. <BR><BR> 상세 에러 메시지: <%= exception.getMessage() %> </BODY> </HTML>

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 brain05 웹 애플리케이션 디렉터리에 ArithmeticError.jsp라는 이름으로 저장한다. 서블릿 클래스에서 발생하는 익셉션도 web.xml에 등록한 에러 페이지를 이용해서 처리 할 수 있다. [예제 5-12]을 실행하면서 두 번째 입력 데이터를 0으로 쓰세요 [그림 5-12] 예제 5-12, 예제 5-14의 실행 결과

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 [예제5-15] 두 수의 몫을 구하는 서블릿 클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; public class DividerServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String str1 = request.getParameter( “NUM1 ”); String str2 = request.getParameter( “NUM2 ”); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); int result = num1 / num2; response.setContentType( “text/html;charset=euc-kr ”); PrintWriter out = response.getWriter(); out.println( “<HTML> ”); out.println( “<HEAD><TITLE>나눗셈 프로그램</TITLE></HEAD> ”); out.println( “<BODY> ”); out.printf( “%d / %d = %d ”, num1, num2, result); out.println( “</BODY> ”); out.println( “</HTML> ”); }

3. web.xml 파일에 에러 페이지 등록하기 익셉션 타입별로 에러 페이지를 등록하는 방법 [그림 5-13] 예제 5-15의 설치 및 등록 방법

3. web.xml 파일에 에러 페이지 등록하기 ① [예제 5-15]를 실행하면서 숫자가 아닌 데이터를 입력하세요 [예제 5-15]를 실행하면서 두 번째 데이터로 0을 쓰세요. [그림 5-14] 예제 5-15의 실행 결과

[그림 5-15] URL에 해당하는 웹 자원이 없을 때 톰뱃이 출력하는 에러 페이지 3. web.xml 파일에 에러 페이지 등록하기 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 톰캣은 웹 브라우저로부터 받은 URL에 해당하는 웹 자원이 없으면 다음과 같은 웹 페이 지를 만들어서 웹 브라우저로 보낸다. 위 404라는 숫자는 URL에 해당하는 웹 자원이 없을 때 웹 서버가 발생시키는 HTTP 상 태 코드이다. [그림 5-15] URL에 해당하는 웹 자원이 없을 때 톰뱃이 출력하는 에러 페이지

3. web.xml 파일에 에러 페이지 등록하기 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 web.xml 파일에는 상태 코드 별로 에러 페이지를 등록할 수 있다. 방법은 web.xml 파일 의 루트 엘리먼트 아래에 <error-page>라는 서브엘리먼트를 쓰고, 그 안에 다시 <error- code>와 <location>이라는 두 개의 서브엘리먼트를 쓰는 것이다. HTTP 상태 코드 <web-app ... > ... <error-page> <error-code>404</error-code> <location>/NotFoundError.jsp</location> </error-page> </web-app> 에러 페이지의 URL 경로명

[그림 5-16] web.xml파일에 404 상태 코드에 대한 에러 페이지를 등록하는 방법 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 위 예제를 brain05 웹 애플리케이션 디렉터리에 NotFoundError.jsp라는 이름으로 저장 후 web.xml 파일에 다음과 같은 <error-page> 엘리먼트를 추가한다. [예제5-16] 404 에러를 처리하는 에러 페이지 <%@page contentType= “text/html; charset=euc-kr ” %> <% response.setStatus(200); %> <HTML> <HEAD><TITLE>페이지 없음 에러</TITLE></HEAD> <BODY> 해당 페이지를 찾을 수 없습니다. </BODY> </HTML> 새로 추가한 <error-page> 엘리먼트 [그림 5-16] web.xml파일에 404 상태 코드에 대한 에러 페이지를 등록하는 방법

3. web.xml 파일에 에러 페이지 등록하기 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 웹 브라우저의 주소 창에 brain05 웹 애플리케이션 디렉터리 내에 존재하지 않는 웹 자 원의 URL을 입력한다. 웹 컴포넌트 안에서 익셉션이 발생했을 때 발생하는 500이라는 HTTP 상태 코드에 대 한 에러 페이지도 등록할 수 있다. brain05 웹 애플리케이션 디렉터리에 없는 웹 자원의 URL을 입력하세요 HTTP 상태 코드 <web-app ... > ... <error-page> <error-code>500</error-code> <location>/ServerInternalError.jsp</location> </error-page> </web-app> 에러 페이지의 URL 경로명

[그림 5-18] web.xml 파일에 500 상태 코드에 대한 에러 페이지를 등록하는 방법 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 위 예제를 brain05 웹 애플리케이션 디렉터리에 ServerInternalError.jsp라는 이름으로 저장한 후 web.xml 파일에 다음과 같은 <error-page> 엘리먼트를 추가한다. [예제5-17] 500 에러를 처리하는 JSP 페이지 <%@page contentType= “text/html; charset=euc-kr ” %> <%response.setStatus(200);%> <HTML> <HEAD><TITLE>웹 서버 에러</TITLE></HEAD> <BODY> 웹 서버 내부에서 에러가 발생했습니다. </BODY> </HTML> [그림 5-18] web.xml 파일에 500 상태 코드에 대한 에러 페이지를 등록하는 방법

3. web.xml 파일에 에러 페이지 등록하기 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 [예제5-18] 소수를 출력하는 JSP 페이지 <%@page contentType= “text/html; charset=euc-kr ” %> <% String str = request.getParameter( “NUM ”); int num = Integer.parseInt(str); %> <HTML> <HEAD><TITLE>소수</TITLE></HEAD> <BODY> int arr[] = { 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 }; for (int cnt = 0; cnt < num; cnt++) out.println(arr[cnt]); </BODY> </HTML>

3. web.xml 파일에 에러 페이지 등록하기 HTTP 상태 코드별로 에러 페이지를 등록하는 방법 웹 서버는 웹 컴포넌트 안에서 발생하는 모든 익셉션에 대해 500이라는 상태 코드를 발 생하기 때문에 500 상태 코드에 대한 에러 페이지는 웹 컴포넌트 안에서 발생한 모든 익 셉션에 대해 적용 된다. ① [예제 5-18]을 호출하면서 출력할 소수의 개수를 입력하세요 ②이번에는 소수의 개수를 10보다 큰 값으로 입력하세요.. [그림 5-19] 예제 5-18의 실행 결과