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

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

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

14-Servlet

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

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

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

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

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

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

본 강의에 들어가기 전

JavaGeneralProgramming.PDF

04장

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

Microsoft PowerPoint - 03-TCP Programming.ppt

Data Provisioning Services for mobile clients

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

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

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

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

J2EE Concepts

웹 개발자를 위한 서블릿/JSP

Data Provisioning Services for mobile clients

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

12-file.key

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

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

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

KYO_SCCD.PDF

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

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F31C2F7BDC32E >

Cluster management software

0. 들어가기 전

TCP/IP Model

JAVA PROGRAMMING 실습 08.다형성

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

Network Programming

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

Data Provisioning Services for mobile clients

Microsoft PowerPoint - 04-UDP Programming.ppt

<4D F736F F F696E74202D20C1A63234C0E520C0D4C3E2B7C228B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Presentation

PowerPoint Presentation

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

중간고사

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

rmi_박준용_final.PDF

2009년 상반기 사업계획

제11장 프로세스와 쓰레드

Microsoft PowerPoint - CSharp-10-예외처리

JAVA PROGRAMMING 실습 09. 예외처리

PowerPoint 프레젠테이션

PowerPoint Template

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

쉽게 풀어쓴 C 프로그래밊

<C4FBC1EEB7CE20C1A4B8AEC7D5BDC3B4D95FC1A4B4E42E687770>

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

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

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

JUNIT 실습및발표

<4D F736F F F696E74202D20C1A63235C0E520B3D7C6AEBFF6C5A920C7C1B7CEB1D7B7A1B9D628B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

Microsoft PowerPoint - 4강.pptx

. 스레드 (Thread) 란? 스레드를설명하기전에이글에서언급되는용어들에대하여알아보도록하겠습니다. - 응용프로그램 ( Application ) 사용자에게특정서비스를제공할목적으로구현된응용프로그램을말합니다. - 컴포넌트 ( component ) 어플리케이션을구성하는기능별요

신림프로그래머_클린코드.key

Microsoft PowerPoint - 7강.pptx

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

Design Issues

PowerPoint Presentation

<4D F736F F D20C0DAB9D9C0A5BDBAC5B8C6AE2E646F63>

슬라이드 1

C++ Programming

PowerPoint Presentation

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

chapter6.doc

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

17장 클래스와 메소드

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

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

PowerPoint 프레젠테이션


자바-11장N'1-502

2) 활동하기 활동개요 활동과정 [ 예제 10-1]main.xml 1 <LinearLayout xmlns:android=" 2 xmlns:tools="

The Pocket Guide to TCP/IP Sockets: C Version

<4D F736F F F696E74202D20C1A63139C0E520B9E8C4A120B0FCB8AEC0DA28B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint 프레젠테이션

쉽게

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

PowerPoint Presentation

PowerPoint Template

Microsoft PowerPoint 웹 연동 기술.pptx

예제 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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

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

JAVA Bean & Session - Cookie

PowerPoint Presentation

Secure Programming Lecture1 : Introduction

Microsoft PowerPoint 세션.ppt

Transcription:

서블릿의라이프사이클 JSP & Servlet

2/39 Contents 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy 메서드 서블릿설정정보를갖는 ServletConfig 객체 서블릿의환경을표현하는 ServletContext 객체

3/55 1. 서블릿의라이프사이클 (1) 웹브라우저에서호출되면서블릿클래스로부터서블릿객체가만들어지고, 그객체가웹컨테이너에의해초기화된다음에호출된다. 웹브라우저의요청을처리할수있는상태의서블릿객체를서블릿이라고함. [ 그림 6-1] 서블릿의라이프사이클

4/55 1. 서블릿의라이프사이클 (2) 서블릿실행과정 (1)

5/55 1. 서블릿의라이프사이클 (3) 서블릿실행과정 (2)

6/55 1. 서블릿의라이프사이클 (4) 서블릿실행과정 (3)

7/55 1. 서블릿의라이프사이클 (5) 서블릿라이프사이클 (Life Cycle) (1) 서블릿일생에대해궁금한점? 서블릿클래스는언제로딩되는가? 서블릿의생성자는언제호출되는가? 서블릿은얼마나오랫동안살아있는가? 서블릿은자원을언제초기화하는가? 서블릿은사용한자원을언제깨끗하게청소하는가?

8/55 1. 서블릿의라이프사이클 (6) 서블릿라이프사이클 (2)

9/55 1. 서블릿의라이프사이클 (7) 서블릿라이프사이클 (3) 관련메소드

10/55 1. 서블릿의라이프사이클 (8) 서블릿라이프사이클 (3) 관련메소드

11/55 1. 서블릿의라이프사이클 (9) 서블릿라이프사이클 (4) 4 번의중요한순간들 1. init() 호출 컨테이너에서서블릿객체를생성한다음에호출한다. service() 이전에실행 서블릿객체를초기화 초기화할내용 (DB 접속등 ) 이있는경우재정의 2. service() 호출 클라이언트의요청후컨테이너에서쓰레드를이용하여호출 요청의 HTTP 메소드 (GET, POST 등 ) 를참조하여해당메소드 (doget(), dopost() 등 ) 호출판단 거의재정의하지않음

12/55 1. 서블릿의라이프사이클 (10) 서블릿라이프사이클 (4) 4 번의중요한순간들 3. doget() / dopost() 호출 service() 메소드에서 HTTP 메소드 (GET, POST) 를참조하여호출 비즈니스로직을구현또는호출 두메소드중하나는반드시재정의하여구현해야한다. 4. destroy() 호출 컨테이너에서서블릿객체를제거할때에호출한다. 거의웹애플리케이션을종료할때. 서블릿객체초기화및실행도중에할당한자원을제거 init() 메소드를재정의하였거나제거할자원이있는경우재정의

13/55 1. 서블릿의라이프사이클 (11) 서블릿라이프사이클 (5) 클라이언트요청실행 클라이언트의요청은서로다른다른스레드에서실행 스레드에의해동일한작업이중복수행되는경우?

14/55 2. 서블릿초기화 & 종료 (1) 서블릿로딩 & 초기화 컨테이너시작시배포된웹애플리케이션및서블릿을확인 로딩 : 컨테이너시작시로딩또는최초클라이언트요청시로딩 초기화 : 서블릿로딩후에 init() 를호출하여서블릿을초기화함. service() 메소드는서블릿초기화완료후에실행가능함.

15/55 2. 서블릿초기화 & 종료 (2) 서블릿초기화 객체가서블릿이되는순간 서블릿객체는초기화과정을통해컨테이너로부터서블릿자격을부여받음

16/55 2. 서블릿초기화 & 종료 (3) init() / destroy() 메소드재정의 서블릿일생에서한번만실행되어야할코드는서블릿클래스안에 init() 메서드와 destroy() 메서드를선언하고그안에써놓으면된다. public class SomeServlet extends HttpServlet { public void init() throws ServletException { 서블릿이초기화될때해야할일을기술하는부분 } public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { out.println( <HTML> ); out.println( <HEAD><TITLE>Hello</TITLE></HEAD> ); out.println( <BODY>Hello, Everyone.</BODY> ); out.println( </HTML> ); } public void destroy() { 서블릿이제거되기전에해야할일을기술하는부분 } [ 그림 6-2] 서블릿클래스의 init 메서드와 destroy 메서드

17/55 2. 서블릿초기화 & 종료 (4) init() 메서드의작성방법 파라미터가없는메서드로선언해야하고, 리턴타입은 void로지정해야하며, public 메서드로선언해야한다. javax.servlet.servletexception 타입예외를던질수있으며, 필요치않으면생략가능 public void init() throws ServletException { 우리가작성할코드가들어가는부분 } 위의점선으로표시된부분에서블릿클래스의초기화작업중에실행해야할코드를 작성

18/55 2. 서블릿초기화 & 종료 (5) init() 메서드호출 컨테이너는서블릿클래스를로딩한후에서블릿클래스의 init(servletconfig config) 메소드를호출하여초기화한다. init(servletconfig config) 메소드에서 init() 메소드를호출한다.

19/55 2. 서블릿초기화 & 종료 (6) init() 메서드의재작성예 (1) [ 예제 6-1] 피보나치수열을출력하는서블릿클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.math.biginteger; public class FibonacciServlet extends HttpServlet { private BigInteger arr[]; public void init() { arr = new BigInteger[100]; arr[0] = new BigInteger( 1 ); arr[1] = new BigInteger( 1 ); for (int cnt = 2; cnt < arr.length; cnt++) arr[cnt] = arr[cnt-2].add(arr[cnt-1]); } public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { String str = request.getparameter( NUM ); int num = Integer.parseInt(str); if (num > 100) num = 100; response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HTML> ); out.println( <HEAD><TITLE> 피보나치수열 </TITLE></HEAD> ); for (int cnt = 0; cnt < num; cnt++) out.println(arr[cnt] + ); out.println( </BODY> ); out.println( </HTML> ); } }

2. 서블릿초기화 & 종료 (7) init() 메서드의재작성예 (2) 톰캣의 webapps 디렉터리아래에웹애플리케이션디렉터리를만들고, 서블릿클래스를컴파일한결과를설치하고등록한다. 2 WEB-INF/classes 서브디렉터리에 [ 예제 6-1] 의컴파일결과를저장하세요 3 WEB-INF 서브디렉터리에다음과같은 web.xml 파일을만들어서저장하세요 1 톰캣의 webapps 디렉터리아래에 brain06/web-inf/classes 서브디렉터리를만드세요 20/55

2. 서블릿초기화 & 종료 (8) init() 메서드의재작성예 (3) [ 예제 6-1] 을호출하면서출력할항의수를 URL 뒤에쓰세요. [ 그림 6-5] 예제 6-1 의실행결과 웹컨테이너가시작될때서블릿이초기화되도록만드는엘리먼트 [ 그림 6-6] 웹컨테이너가시작될때서블릿이초기화되도록만드는엘리먼트 21/55

22/55 2. 서블릿초기화 & 종료 (9) destroy() 메서드의작성방법 destroy 메서드의작성방법은 init 메서드와비슷함 파라미터가없어야하고, 리턴타입은 void여야하고, public 메서드로선언해야한다. 하지만 init 메서드와달리 throws 절을쓸수없다. public void destroy() { 우리가작성할코드가들어가는부분 }

23/55 2. 서블릿초기화 & 종료 (10) destroy() 메서드의재작성예 (1) 로그파일생성및로그작성 [ 그림 6-7] 인사말을출력하는웹애플리케이션의화면설계 http://localhost:8080/brain06/yourname.html http://localhost:8080/brain06/greeting [ 그림 6-7] 의왼쪽화면의 URL [ 그림 6-7] 의오른쪽화면의 URL

24/55 2. 서블릿초기화 & 종료 (11) destroy() 메서드의재작성예 (2) [ 예제 6-2] 이름을입력받는 HTML 문서 <HTML> <HEAD> <META http-equiv= Content-Type content= text/html;charset=euc-kr > <TITLE> 이름입력 </TITLE> </HEAD> <BODY> <H3> 이름을입력하십시오.</H3> <FORM ACTION=greeting> 이름 : <INPUT TYPE=TEXT NAME=NAME> <INPUT TYPE=SUBMIT VALUE= 확인 > </FORM> </BODY> </HTML>

25/55 2. 서블릿초기화 & 종료 (12) destroy() 메서드의재작성예 (3) [ 예제 6-3] 인사말을출력하는서블릿클래스 import javax.servlet.http.*; import javax.servlet.*; import java.io.*; import java.util.*; public class GreetingServlet extends HttpServlet { private PrintWriter logfile; public void init() throws ServletException { try { logfile = new PrintWriter(new FileWriter( c:\\data\\log.txt, true)); } catch (IOException e) { throw new ServletException(e); } } public void doget(httpservletrequest request, HttpServletResponse response) throws IOException, ServletException { String name = request.getparameter( NAME ); String greeting = 안녕하세요, + name + 님. ; if (logfile!= null) { GregorianCalendar now = new GregorianCalendar(); logfile.printf( %TF %TT - %s %n, now, now, name); } response.setcontenttype( text/html;charset=euc-kr ); PrintWriter out = response.getwriter(); out.println( <HEAD><TITLE> 인사하기 </TITLE></HEAD> ); } out.println( <BODY> ); out.println(greeting); out.println( </BODY> ); out.println( </HTML> ); } public void destroy() { if (logfile!= null) logfile.close(); }

26/55 2. 서블릿초기화 & 종료 (13) destroy() 메서드의재작성예 (4) 2 [ 예제 6-3] 의컴파일결과를 classes 디렉터리에저장하세요. 3 web.xml 파일을열어서다음과같은두엘리먼트를추가하세요 1 brain06 웹애플리케이션디렉터리의 WEB-INF 서브디렉터리로가세요.

27/55 2. 서블릿초기화 & 종료 (14) destroy() 메서드의재작성예 (5) [ 그림 6-10] 예제 6-3 이만든로그파일의내용확인하기 출력메시지

28/55 3. 클라이언트요청실행 (1) service() 메소드실행 (1) 컨테이너의클라이언트요청실행과정 HttpServletRequest & HttpServletResponse 객체생성 새로운스레드생성또는스레드풀에서가져오기 스레드에서 service(request, response) 를호출 & 실행 service(request, response) 반환후에스레드제거 HttpServletRequest & HttpServletResponse 객체제거

29/55 3. 클라이언트요청실행 (2) service() 메소드실행 (2) service() 메소드는매개변수 HttpServletRequest 객체에서 HTTP 요청메소드유형을읽어와그에대응하는서블릿메소드를호출하여요청을처리한다. HTTP 요청메소드 GET doget() 메소드호출 HTTP 요청메소드 POST dopost() 메소드호출 그외 HTTP 요청메소드 HEAD TRACE PUT DELETE OPTION CONNECT

30/55 3. 클라이언트요청실행 (3) service() 메소드재정의 클라이언트요청은 doget()/dopost() 메소드에서처리하기때문에 service() 메 소드는거의재정의할필요가없음. doget()/dopost() 메소드재정의 클라이언트요청을적절히처리하여응답을반환하기위해반드시재정의하여야함. HttpServletRequest 객체와 HttpServletResponse 객체를매개변수를전달받아이를사용하여요청을처리하기때문에이들객체에대한이해가필수적.

31/55 3. 클라이언트요청실행 (4) HttpServletRequest 인터페이스 (1) 요청유형, 쿠키, 세션등 HTTP 요청에대한인터페이스를추상화한것으로 HTTP 요청접근관련메소드포함 HTTP 프로토콜에관련된메소드들이추가되어있음

32/55 3. 클라이언트요청실행 (5) HttpServletRequest 인터페이스 (2) HTTP 요청메시지정보를접근하는인터페이스제공 HTTP 요청메소드 : GET & POST

33/55 3. 클라이언트요청실행 (6) HttpServletRequest 인터페이스 (3) HTTP 요청메소드 : GET & POST

34/55 3. 클라이언트요청실행 (7) HttpServletRequest 인터페이스 (4) GET & POST 요청메소드차이 데이터의형식및크기 보안 즐겨찾기등록 사용용도 멱등 (Idempotent) 여부

35/55 3. 클라이언트요청실행 (8) HttpServletRequest 인터페이스 (5) 멱등 (Idempotent) : 아무부작용없이동일한작업을한번이상계속할수있다는 것을의미

36/55 3. 클라이언트요청실행 (9) HttpServletRequest 인터페이스 (6) 멱등이아닌요청예 :

37/55 3. 클라이언트요청실행 (10) HttpServletRequest 인터페이스 (7) 멱등이아닌요청예 :

38/55 3. 클라이언트요청실행 (11) HttpServletRequest 인터페이스 (8) 멱등이아닌요청예 :

39/55 3. 클라이언트요청실행 (12) HttpServletRequest 인터페이스 (9) 멱등인요청 : GET, HEAD / 멱등이아닌요청 : POST, DELETE GET 또는 POST 요청메소드요청결정방법 : <form > 에 method 정의가빠진경우 GET으로결정이된다.

40/55 3. 클라이언트요청실행 (13) HttpServletRequest 인터페이스 (10) 자주사용하는메소드 클라이언트플랫폼정보및브라우저정보 String client = request.getheader( User-Agent ); Request에관련된쿠키 Cookie[] cookies = request.getcookies(); 클라이언트세션정보 HttpSession session = request.getsession(); Request의 HTTP 메소드 String themethod = request.getmethod(); Request의입력스트림 InputStream input = request.getinputstream();

41/55 3. 클라이언트요청실행 (14) HttpServletRequest 인터페이스 (11) 자주사용하는메소드 getinputstream() 에반환하는입력스트림은언제사용하는가? getheader() & getintheader() 차이점? getremoteport(), getserverport(), getlocalport() 차이점?

42/55 3. 클라이언트요청실행 (15) HttpServletResponse 인터페이스 (1) HTTP 응답메시지에대한인터페이스를추상화 서블릿에서클라이언트에응답데이터를보내기위해 HttpServletResponse 객체를사용 HTTP 에관련된오류, 쿠키, 헤더정보에대한메소드들이추가되어있음

3. 클라이언트요청실행 (16) HttpServletResponse 인터페이스 (2) 자주사용하는메소드 응답데이터의데이터타입정의 response.setcontenttype( text/html ); 출력스트림사용 : 가급적 JSP 사용권장 Writer writer = response.getwriter(); // 문자출력 OutputStream output = response.getoutputstream(); // 바이트출력 헤더정보설정, 쿠키추가등 response.addcookie(); response.addheader(); 43/55

3. 클라이언트요청실행 (17) HttpServletResponse 인터페이스 (3) Response 객체의 I/O 사용 동적 HTML 페이지출력 소모적인작업 JSP로대체 이진데이터 (pdf, jar 등 ) 전송 바이트출력스트림을이용하여전송 44/55

45/55 3. 클라이언트요청실행 (18) HttpServletResponse 인터페이스 (4) Response 객체의 I/O 사용 이진데이터전송예

46/55 3. 클라이언트요청실행 (19) HttpServletResponse 인터페이스 (5) Response 객체의 I/O 사용 이진데이터전송예

3. 클라이언트요청실행 (20) HttpServletResponse 인터페이스 (6) 컨텐트타입 (MIME 타입 ) 설정 setcontenttype() 메소드 response.setcontenttype( text/html ); 응답메시지의데이터타입을설정 HTTP 응답메시지헤더중에하나 47/55

3. 클라이언트요청실행 (21) HttpServletResponse 인터페이스 (7) 컨텐트타입 (MIME 타입 ) 종류 text/html application/pdf video/quicktime image/jpeg application/octet-stream application/x-zip 48/55

4. HTTP 요청리다이렉터 & 디스패치 (1) HTTP 요청리다이렉트 & 디스패치 클라이언트요청을받은서블릿 ( 또는 JSP) 가직접처리하지않고클라이언트요청을다른사이트또는다른컴포넌트에넘길수있다. HTTP 요청리다이렉트 (Redirect) (1) 클라이언트요청에대해완전히다른 URL 로방향을바꾸어처리하는동작 서블릿리다이렉트는웹브라우저가처리 : if (workforme) { // 요청을처리 } else { response.sendredirect( http:// www.example.com ); } : 49/55

50/55 4. HTTP 요청리다이렉터 & 디스패치 (2) HTTP 요청리다이렉트 (Redirect) (2)

51/55 4. HTTP 요청리다이렉터 & 디스패치 (3) HTTP 요청리다이렉트 (Redirect) (3)

4. HTTP 요청리다이렉터 & 디스패치 (4) HTTP 요청리다이렉트 (Redirect) (4) 주의할사항 : Response 객체에쓰기작업을한뒤에는 sendredirect() 를할수없다 sendredirect() 메소드는매개변수롤 URL 객체가아닌 String 객체를받는다» sendredirect(new URL(http://www.example.com)) : error 52/55

53/55 4. HTTP 요청리다이렉터 & 디스패치 (5) HTTP 요청디스패치 (Dispatch) (1) 클라이언트요청을웹애플리케이션의다른컴포넌트 (Servlet or JSP) 에게넘겨처리하도록하는동작 클라이언트요청은서버에서처리됨.

54/55 4. HTTP 요청리다이렉터 & 디스패치 (6) HTTP 요청디스패치 (Dispatch) (2)

JSP & Servlet