<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

Similar documents
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Data Provisioning Services for mobile clients

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

Data Provisioning Services for mobile clients

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

Microsoft PowerPoint - CSharp-10-예외처리

C++ Programming

PHP & ASP

PowerPoint Template


Data Provisioning Services for mobile clients

PowerPoint 프레젠테이션

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

Microsoft PowerPoint - 03-TCP Programming.ppt

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Data Provisioning Services for mobile clients

PowerPoint Presentation

PowerPoint 프레젠테이션

슬라이드 1

2009년 상반기 사업계획


var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint 웹 연동 기술.pptx

PowerPoint 프레젠테이션

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - aj-lecture6.ppt [호환 모드]

PowerPoint Presentation

JAVA PROGRAMMING 실습 09. 예외처리

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

14-Servlet

JUNIT 실습및발표

04장

뇌를 자극하는 JSP & Servlet 슬라이드

쉽게

Microsoft PowerPoint 세션.ppt

PowerPoint Presentation

PHP & ASP

PowerPoint Presentation

중간고사

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

PowerPoint 프레젠테이션

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

PowerPoint Presentation

Microsoft PowerPoint Python-WebDB

SK Telecom Platform NATE

Data Provisioning Services for mobile clients

Semantic Consistency in Information Exchange

Data Provisioning Services for mobile clients

3장

HTML5

17장 클래스와 메소드

Cookie Spoofing.hwp

로거 자료실

PowerPoint 프레젠테이션

2장 변수와 프로시저 작성하기

PowerPoint 프레젠테이션

Cluster management software

gnu-lee-oop-kor-lec06-3-chap7

산업입지내지6차

PowerPoint Template

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

슬라이드 1

Javascript

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

12-file.key

쉽게 풀어쓴 C 프로그래밍

PowerPoint Template

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chap6_cmpl

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft PowerPoint - Java7.pptx

어댑터뷰

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

Javascript

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

뇌를 자극하는 JSP & Servlet 슬라이드

Dialog Box 실행파일을 Web에 포함시키는 방법

쉽게 풀어쓴 C 프로그래밍

J2EE Concepts

PowerPoint 프레젠테이션

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

제11장 프로세스와 쓰레드

歯MW-1000AP_Manual_Kor_HJS.PDF

쉽게 풀어쓴 C 프로그래밍

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

Design Issues

Network Programming

JAVA Bean & Session - Cookie

Web Service Computing

슬라이드 1

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<C0CCBCBCBFB52DC1A4B4EBBFF82DBCAEBBE7B3EDB9AE2D D382E687770>

Transcription:

10 장. 에러처리

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

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

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

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

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

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> <body> divide_form.html 의변경내용 기존 : <form action="divide.jsp" method="get"> ==> 수정 : <form action="divide2.jsp" method="get"> <%= num1 %> / <%= num2 %> = <%= (double)num1 / (double)num2 %> <br/> <a href="divide_form.jsp">back</a> <form> </body> </html> 7/27

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

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

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

1. page 지시문을활용한에러처리 01 02 03 04 05 06 07 08 09 10 11 12 13 exception 기본객체사용하기예제 <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.2-1] jspbook\errform.html 11/27

1. page 지시문을활용한에러처리 01 02-03 04 05 06 07 08 09 10 11 12 exception 기본객체사용하기예제 [ 예제 10.2-2] jspbook\ch10\errformhandler.jsp <%@ 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> 12/27

1. page 지시문을활용한에러처리 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 exception 기본객체사용하기예제 <%@ page contenttype="text/plain;charset=utf-8" %> <%@ page iserrorpage="true" import="java.io.*" %> 려줌 <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> 13/27 </html> [ 예제 10.2-3] jspbook\ch10\errorhandler2.jsp // 현재페이지가 error 가발생했을때출력되는페이지임을알 // 자세한 exception 정보를주석으로만출력함

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

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

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> 16/27

2. HTTP 에러코드별에러페이지지정하기 404, 500 에러발생시출력할페이지설정예 <?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> [ 예제 10.3-1] jspbook\ch10\web-inf\web.xml <error-page> <error-code>500</error-code> <location>/ch10/error/500errorhandler.jsp</location> </error-page> <!-- 삽입끝 --> </web-app> 17/27

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> 18/27

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> 19/27

2. HTTP 에러코드별에러페이지지정하기 404 에러발생및출력화면 브라우저에서 URL 입력예 다음과같이존재하지않는페이지에대한 URL 을입력한다. http://localhost:8080/jspbook/ch10/11111.jsp 출력화면 20/27

2. HTTP 에러코드별에러페이지지정하기 500 에러발생및출력화면 divide_form.html의 09라인수정 기존 : <form action="divide2.jsp" method="get"> ==> 수정 : <form action="divide.jsp" method="get"> 500 에러를발생하기위하여 divide_form.html 의실행에서문자를입력값으로넣는모습 21/27

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

3. Java 고유의예외종류별에러페이지지정하기 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> 23/27

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

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

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

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