10장. 에러 처리 제10장.

Slides:



Advertisements
Similar presentations
W3000 제 품 제 안 서.
Advertisements

국가도서관통계시스템 수치입력자 매뉴얼 이의신청 방법 Version. 1.0.
11 JSTL 사용하기.
CHAPTER 15. JSP.
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
HTML과 CGI 프로그래밍 PHP 웹 프로그래밍 (PHP Web Programming) 문양세
Internet Computing KUT Youn-Hee Han
12장. JSP에서 자바빈 활용 제12장.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 빈을 이용한 회원가입 양식 작성하기 빈 작성
12 커스텀 액션.
UIT Series HTML + JavaScript [Chapter 1] Html을 이용한 웹 페이지 만들기.
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
9 표준 액션.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
01. Index StarPlayer API Guide 01. Index 02. 상수값 정의 03. API 정의
5 익셉션 처리.
Web Server와 DB 연동.
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
APM (Apache+PHP+MySQL)
이 름: 정홍도 (과장) 팀 명: 개발사업팀 일 자:
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
1강 01장. 웹과 자바.
HTML5 입문 인공지능 연구실.
6장. JSP 지시문 (Directives) 제6장.
중 간 고 사 (웹프로그래밍)
AJAX 커머스아이 박준열.
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
웹서버와 설치에 필요한 것 WWW ( world wide web ) TCP/IP 프로토콜을 이용하는 클라이언트/서버 환경
5. JSP의 내장객체1.
[INA240] Web Programming Homework #3 [INA240] Web Programming
JSP 내장 객체 JSP에서 기본으로 사용할 수 있는 내장 객체 종류를 알아본다. 내장 객체별 주요 기능과 메서드를 이해한다.
HTML5+CSS3 실무 테크닉 김은기 저.
4. JSP의 스크립트 요소 Script 요소의 이해 선언문(Declaration) Scirptlet 표현식 주석
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다
Cookie 와 Session.
JDBC (Java Database Connectivity)
9장 JSP페이지의 에러처리 이장에서 배울 내용 : JSP페이지에서 에러를 처리하는 방법에 대해 학습해본다. 에러페이지를 사용한 에러처리의 문제점을 살펴보고, 현재 JSP2.0에서 권장하는 에러 처리 형태인 에러코드별 에러처리를 하는 방법에 대해 학습한다.
Web Socket.
BIZSIREN 실명확인서비스 개발 가이드 서울신용평가정보㈜ 신용조회부 (TEL , FAX )
HTML.
충북대학교 데이터베이스 & 정보시스템 연구실 정 태 성
10장. 자바빈(JavaBean) 이 장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다. 하나의 JSP페이지 안에 디자인부와 로직부가 혼재하게 되면 프로그램의 협업과 유지보수가 어렵다. 자바빈은 로직을.
이장에서 배울 내용 : 화면에 표시를 담당하는 JSP페이지와 실제프로그램을 처리하는 로직을 분리하는 것에 대해서 학습한다
문자 인코딩에 관하여 팀 E.E 강재문, 윤영호 백진후, 조남훈.
CGI (Common Gateway Interface)
JSP Programming with a Workbook
HTML CSS 자바스크립트 무작정 따라하기
제 14 장 커스텀 태그 학기 인터넷비즈니스과 강 환수 교수.
상품등록 방식 비교 년 4월 23일 (주)에이치케이넷츠.
Data Base Web Programming
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
KTF 무선인터넷 표준 UI 2000년 4월 SK 텔레콤 귀중 CP 제공용
CGI (Common Gateway Interface)
17장 웹 사이트 제작 완성 한빛미디어(주).
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
ASP 수행 화면(1).
LOGIN할 때 아이디, 비번 입력 여부 체크하기
Spring Security 2015 Web Service Computing.
세션 (Session) Yang-Sae Moon Department of Computer Science
주요공지로 정할 글을 올립니다. 제목과 주소를 복사해둡니다
HTML HTML 기본 구조와 태그 다양한 태그 다루기
Data Base Web Programming
관리자 페이지에서 관리자 승인 1. 정기권 신규고객 1. 로그인 화면 2. 차량등록여부 확인 3. 개인정보 활용 동의
Presentation transcript:

10장. 에러 처리 제10장

1. page 지시문을 활용한 에러 처리 page 지시문의 errorPage와 isErrorPage 속성 이 속성이 지정된 JSP 페이지 내에서 Exception이 발생하는 경우 새롭게 실행할 페이지를 지정하기 위하여 사용 isErrorPage 속성 isErrorPage는 위와같은 방법으로 새롭게 실행되는 페이지에 지정할 속성으로 현재 페이지가 Exception 처리를 위한 페이지임을 지정하기 위하여 사용 errorPage와 isErrorPage 속성 사용 목적 1) 발생하는 오류를 조금 더 일관성 있고 체계적으로 처리하기 위함 2) 개발 당시의 Exception 처리와 서비스를 운영할 때의 Exception 처리 방법을 바꾸기 위함 실제 서비스를 운영할 때에는 일종의 안내 메시지를 보여주어 이용자가 사이트를 더욱 신뢰할 수 있도록 하는 것이 좋다. 제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 예제 [예제 10.1-1] jspbook\ch10\divide_form.html 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>나누기 폼</title> </head> <body> 정수만 입력하세요. <br/> <form action="divide.jsp" method="get"> <input type="text" name="num1" size="3" /> / <input type="text" name="num2" size="3" /> = <br/> <input type="submit" value="Submit" /> <form> </body> </html> 제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 예제 [예제 10.1-2] jspbook\ch10\divide.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 <%@ page contentType="text/html;charset=utf-8" %> <% int num1 = Integer.parseInt(request.getParameter("num1")); int num2 = Integer.parseInt(request.getParameter("num2")); %> <html> <head> <title>나누기 처리</title> </head> <body> <%= num1 %> / <%= num2 %> = <%= (double)num1 / (double)num2 %> <br/> <a href="divide_form.html">back</a> </body> </html> 제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 예제 정수를 입력하여야 할 텍스트 창에 문자, 예를 들어 "a"를 입력하였을 때 출력되는 Exception 정보 제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 예제 Exception Stack Trace (예외 스택 자취) 실제 서비스가 개시된 응용에서는 이러한 Exception Stack Trace 가 보이는 화면이 사용자에게 보여지면 서비스 신뢰성에 큰 타격을 준다. [Note] Exception Stack Trace (예외 스택 자취) Exception Stack Trace란 Exception이 발생한 메소드 호출을 발생한 순서의 역순으로 나열한다. 즉 가장 최근의 메소드 호출이 먼저 리스트 되고 그 다음 줄에 이전의 메소드 호출이 리스트 된다. 이 리스트를 사용해서 내부적으로 메소드들이 어떠한 과정으로 호출되었는지를 알 수 있으며 디버깅에 중요한 정보로 활용할 수 있다.   제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 [예제 10.1-3] jspbook\ch10\divide2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 <%@ page contentType="text/html;charset=utf-8" %> <%@ page errorPage="error/errorHandler.jsp" %> // page 지시문의 errorPage를 "errorHandler.jsp"로 설정 <% int num1 = Integer.parseInt(request.getParameter("num1")); int num2 = Integer.parseInt(request.getParameter("num2")); %> <html> <body> <title>나누기 처리</title> </head> <%= num1 %> / <%= num2 %> = <%= (double)num1 / (double)num2 %> <br/> <a href="divide_form.jsp">back</a> <form> </body> </html> divide_form.html의 변경 내용 기존: <form action="divide.jsp" method="get"> ==> 수정: <form action="divide2.jsp" method="get"> 제10장

1. page 지시문을 활용한 에러 처리 errorPage와 isErrorPage 속성 [예제 10.1-4] jspbook\ch10\error\errorHandler.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 <%@ page contentType="text/html;charset=utf-8" %> <%@ page isErrorPage="true" %> // 현재 페이지가 error가 발생했을 때 출력되는 페이지임을 알려줌. <html> <head> <title>divide 에러 처리</title> </head> <body> <H2 align="center">나누기 처리 중 에러가 발생했습니다.</H2> <hr> <table align="center" width="80%"> <tr bgcolor="yellow"> <td>빠른 시일내에 올바르게 복구하겠습니다. 문의는 관리자에게 해주세요.</td> </tr> <td>관리자 E-MAIL: jspbook@jspbook.org</td> </table> </body> </html> 제10장

1. page 지시문을 활용한 에러 처리 사용자 입력 오류와 Javascript [Note] 사용자 입력 오류와 Javascript [그림 10-4]과 [그림 10-5]에서 보여주는 예제가 실제 서비스 되는 웹페이지에 적용될 때에 대개는 사용자가 잘못된 입력을 하지 못하도록 Javascript를 이용하여 클라이언트 측 스크립팅 코드를 함께 넣는다. 즉, a를 입력하고 Submit 버튼을 누르면 Javascript를 활용해서 대화창을 띄우고 입력이 잘못되었다는 경고 메시지를 보여주는 것이 좋다. 이로써 쓸데없이 서버로의 잘못된 트래픽을 유발하는 것을 방지하는 것이 올바른 개발방법이다.   제10장

printStackTrace(PrintWriter pw) 1. page 지시문을 활용한 에러 처리 exception 기본 객체 사용하기 exception 기본 객체 page 지시문에서 오류 페이지 (isErrorPage="true") 로 지정된 JSP 페이지에서 예외가 발생할 때 전달되는 java.lang.Throwable의 인스턴스에 대한 참조 변수 page 지시문에서 isErrorPage="true" 로 지정을 해야 exception 기본 객체를 활용할 수 있음 exception 기본 객체의 주요 메소드 메소드 리턴 타입 설명 getMessage() String 문자열로 된 오류 메시지를 리턴한다. printStackTrace() void 표준 출력 스트림으로 스택 추적 정보를 출력한다. printStackTrace(PrintWriter pw) PrintWriter 객체스트림으로 스택 추적 정보를 출력한다. toString() 예외 클래스 이름과 함께 오류 메시지를 리턴 한다. 제10장

1. page 지시문을 활용한 에러 처리 exception 기본 객체 사용하기 예제 [예제 10.2-1] jspbook\errform.html 01 02 03 04 05 06 07 08 09 10 11 12 13 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> <title>exception 기본 객체 활용</title> </head> <body> <form action="errformhandler.jsp" method="post"> 나이를 입력하세요 : <input type="text" name="age" /> <input type="submit" value="Submit" /> </form> </body> </html> 제10장

1. page 지시문을 활용한 에러 처리 exception 기본 객체 사용하기 예제 [예제 10.2-2] jspbook\ch10\errformhandler.jsp 01 02 - 03 04 05 06 07 08 09 10 11 12 <%@ page contentType="text/html;charset=utf-8"%> <%@ page errorPage="error/errorHandler2.jsp" %> // page 지시문의 errorPage를 // "errhandler2.jsp"로 설정 <html> <head><title>exception 기본 객체 활용</title></head> <body> <% int age = Integer.parseInt(request.getParameter("age")); %> <p>Your age is : <%= age %> years.</p> <p><a href="errform.html">Back</a>.</p> </body> </html> 제10장

1. page 지시문을 활용한 에러 처리 exception 기본 객체 사용하기 예제 [예제 10.2-3] jspbook\ch10\errorhandler2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 <%@ page contentType="text/plain;charset=utf-8" %> <%@ page isErrorPage="true" import="java.io.*" %> // 현재 페이지가 error가 발생했을 때 출력되는 페이지임을 알려줌 <html> <head><title>exception 기본 객체 활용</title></head> <body> <%= exception.toString() %><br> // exception의 정보를 보여줌 <% out.println("<!--"); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); exception.printStackTrace(pw); out.print(sw.toString()); sw.close(); pw.close(); out.println("-->"); %> </body> </html> // 자세한 exception 정보를 주석으로만 출력함 제10장

1. page 지시문을 활용한 에러 처리 exception 기본 객체 사용하기 예제 errhandler.jsp의 동작과정 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 404 에러 발생 시 페이지 출력 예 디폴트 출력 화면 Time 지 웹 사이트의 출력 화면 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 HTTP 에러 발생 시 출력할 페이지의 URL 지정 web.xml 에 다음과 같이 지정 <?xml version="1.0" encoding="utf-8"?> <web-app ...> ... <error-page> <error-code>에러 코드</error-code> <location>에러 페이지의 URL</location> </error-page> </web-app> 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 404, 500 에러 발생 시 출력할 페이지 설정 예 [예제 10.3-1] jspbook\ch10\WEB-INF\web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> ... <!-- 다음 내용을 삽입 --> <error-page> <error-code>404</error-code> <location>/ch10/error/404errorHandler.jsp</location> </error-page> <error-code>500</error-code> <location>/ch10/error/500errorHandler.jsp</location> <!-- 삽입 끝 --> </web-app> 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 404 에러 발생 시 출력할 페이지 구성 예 [예제 10.3-2] jspbook\ch10\error\404errorHandler.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contentType="text/html;charset=utf-8" %> <% response.setStatus(HttpServletResponse.SC_OK); %> <html> <head><title>404 에러 발생</title></head> <body> <b> <h1>에러 코드 404</h1> 요청한 페이지는 존재하지 않습니다. URL을 다시 살펴보시기 바랍니다. </b> </body> </html> 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 500 에러 발생 시 출력할 페이지 구성 예 [예제 10.3-3] jspbook\ch10\error\500errorHandler.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contentType="text/html;charset=utf-8" %> <% response.setStatus(HttpServletResponse.SC_OK); %> <html> <head><title>500 에러 발생</title></head> <body> <b> <h1>에러 코드 500</h1> 서비스 처리 과정에서 에러가 발생하였습니다. 조속한 시일 내로 해결하겠습니다. </b> </body> </html> 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 404 에러 발생 및 출력 화면 브라우저에서 URL 입력 예 출력 화면 http://localhost:8080/jspbook/ch10/11111.jsp 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 500 에러 발생 및 출력 화면 divide_form.html의 09라인 수정 기존: <form action="divide2.jsp" method="get"> ==> 수정: <form action="divide.jsp" method="get"> 제10장

2. HTTP 에러 코드별 에러 페이지 지정하기 500 에러 발생 및 출력 화면 500에러에 대한 출력 내용 제10장

3. Java 고유의 예외 종류별 에러 페이지 지정하기 [예제 10.4-1] jspbook\ch10\WEB-INF\web.xml <?xml version="1.0" encoding="utf-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> ... <!-- 다음 내용을 삽입 --> <error-page> <exception-type>java.lang.NullPointerException</exception-type> <location>/ch10/error/nullPointerErrorHandler.jsp</location> </error-page> <!-- 삽입 끝 --> </web-app> 제10장

3. Java 고유의 예외 종류별 에러 페이지 지정하기 NullPointerException 에러 발생 시 출력할 페이지 구성 예 [예제 10.4-2] jspbook\ch10\error\nullPointerErrorHandler.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 <%@ page contentType="text/html;charset=utf-8" %> <% response.setStatus(HttpServletResponse.SC_OK); %> <html> <head><title>NullPointerException 예외 발생</title></head> <body> <h1>예외 타입 NullPointerException</h1> 서비스 처리 과정에서 예외가 발생하였습니다. 조속한 시일 내로 해결하겠습니다. </body> </html> 제10장

3. Java 고유의 예외 종류별 에러 페이지 지정하기 NullPointerException 에러 발생 및 출력 화면 [예제 10.4-3] jspbook\ch10\readID.jsp 01 02 03 04 05 06 07 08 09 <%@ page contentType="text/html;charset=utf-8" %> <html> <head><title>파라미터 출력 및 에러 처리 페이지 지정</title></head> <body> ID 파라미터 값에 대한 대문자 처리: <%= request.getParameter("ID").toUpperCase() %> </body> </html> 제10장

4. 에러 페이지 지정의 일반적인 방법 에러 페이지를 지정 및 구성하는 3가지 방법 page 지시문 및 errorPage와 isErrorPage 속성을 활용한 에러 페이지 지정하기 web.xml의 <error-code>태그를 활용한 HTTP 에러 코드별 에러 페이지 지정하기 web.xml을 <exception-type>태그를 활용한 Java 고유의 예외 종류별 에러 페이지 지정하기 위 방법을 중복하여 사용하였을 때 적용되는 우선순위 우선순위 ①: page 지시문의 errorPage 속성 활용 우선순위 ②: JSP 페이지에서 발생한 HTTP 에러 또는 예외 타입이 web.xml 파일의 <error-code>에서 지정한 에러 코드와 동일하거나 <exception-type>에서 지정한 예외 타입과 동일한 경우 지정한 에러 페이지를 보여준다. 우선순위 ③: 위의 순위 중 아무 것도 해당되지 않을 경우 Tomcat 엔진이 제공하는 기본 에러 페이지를 보여준다. 제1장

4. 에러 페이지 지정의 일반적인 방법 에러 페이지를 지정 및 구성하는 일반적인 관례 일반적인 HTTP 에러 코드(404, 500 등)에 대한 에러 페이지를 web.xml의 <error-code>태그를 활용하여 지정한다. 별도로 처리해 주어야 하는 Java 고유의 예외 타입에 대한 에러 페이지는 web.xml에 <exception-type> 태그를 활용하여 지정한다. 특정 JSP 페이지에서 발생하는 HTTP 에러 또는 Java 고유의 예외 타입을 별도로 처리하기 위해서는 관련 에러 페이지를 page 지시문의 errorPage 속성을 사용해서 지정하고 에러 페이지에는 page 지시문의 isErrorPage 속성에 "true"을 할당한다. 제1장