3 장 . 웹 어플리케이션과 jsp 및 servlet 의 이해

35
3 장 . 장 장장장장장장장 JSP 장 Servlet 장 장장 장3장

Upload: margie

Post on 05-Jan-2016

195 views

Category:

Documents


1 download

DESCRIPTION

3 장 . 웹 어플리케이션과 JSP 및 Servlet 의 이해. 1. 웹 어플리케이션 개념 및 폴더 구조. 웹 어플리케이션의 개념 독립 어플리케이션 (Stand-alone Application) 웹 어플리케이션 (Web Application) 웹 브라우저 상에서 수행되는 어플리케이션 HTTP 와 HTML 을 기본으로 사용 웹 어플리케이션이 Tomcat 에서 구현될 때의 규칙 임의의 웹 어플리케이션은 webapps 폴더 하위에 하나의 폴더로 구성. jspbook 웹 어플리케이션 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3 장 . 웹 어플리케이션과JSP 및 Servlet 의 이해

제 3 장

Page 2: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션의 개념

독립 어플리케이션 (Stand-alone Application) 웹 어플리케이션 (Web Application)

웹 브라우저 상에서 수행되는 어플리케이션 HTTP 와 HTML 을 기본으로 사용

웹 어플리케이션이 Tomcat 에서 구현될 때의 규칙 임의의 웹 어플리케이션은 webapps 폴더 하위에 하나의 폴더로 구성

2/35 제 3 장웹 어플리케이션과 webapps 내의 폴더

jspbook 웹 어플리케이션( 첫 번째 웹 어플리케이션 )

Page 3: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션의 개념

3/35 제 3 장

webapps 내의 두 번째 웹 어플리케이션 생성

jspbook 웹 어플리케이션( 첫 번째 웹 어플리케이션 )

myapp 웹 어플리케이션( 두 번째 웹 어플리케이션 )

webapps ‘ 폴더’ 내에 새로운 폴더 생성 = 새로운 ‘ Context’ 생성 (ServletContext: servlet 들이 실행되는 환경 )= 새로운 웹 어플리케이션들 생성

Page 4: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션의 개념

웹 어플리케이션 폴더는 하나의 ServletContext 와 매핑 ServletContext 는 하나의 웹 어플리케이션 폴더 내에 여러 JSP

페이지와 Servlet 들이 ‘공동으로’ 활용할 수 있는 저장소로 활용 즉 , 어플리케이션 환경 (environment) 서로 다른 두 개의 웹 어플리케이션은 ServletContext 객체와

매핑되어 각자 독립적인 공간에 자신만의 정보를 관리

웹 어플리케이션 폴더와 URL 간의 매핑 URL 에 웹 어플리케이션 지정 없이 http://localhost:8080 으로 요청

webapps 폴더 밑의 ROOT 폴더로 자동으로 접근 http://localhost:8080/hello.jsp webapps/ROOT/hello.jsp 파일

접근 http://localhost:8080 webapps/ROOT/index.html 파일 접근

4/35 제 3 장

Page 5: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션 폴더와 URL 간의 매핑

webapps 내에 jspbook 과 myapp 웹 어플리케이션을 생성시에 함께 생성되는 URL

위 URL 로 접근하면 jspbook 및 myapp 폴더 밑의 index.html 또는 index.jsp 파일을 접근

index.html, index.jsp: 파일명까지 정확하게 입력하지 않아도 폴더명만으로도 찾아지는 디폴트 파일

5/35 제 3 장

http://localhost:8080/jspbook

http://localhost:8080/myapp

Page 6: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션 폴더 (Context) 와 URL 간의 매핑

중요 메소드 2 개 request.getContextPath()

웹 어플리케이션의 경로를 리턴 application.getRealPath("/")

웹 어플리케이션의 하드디스크상 실제 경로를 리턴

6/35 제 3 장

01

02

03

04

05

06

07

08

<%@ page contentType="text/html;charset=utf-8" %>

<html>

<head><title>context 의 경로 </title></head>

<body>

현재 수행 JSP 의 context ( 웹 어플리케이션 ) 경로 : <%= request.getContextPath() %> <br/>

현재 수행 JSP 의 context 실제 경로 : <%= application.getRealPath("/") %>

</body>

</html>

[ 예제 3.1] jspbook\ch03\path.jsp

Page 7: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션 폴더와 URL 간의 매핑

jspbook/test 폴더 밑의 testjsp.jsp 파일 접근 URL

jspbook/images 폴더 밑의 apple.bmp 파일 접근 URL

7/35 제 3 장

http://localhost:8080/jspbook/test/

testjsp.jsp

http://localhost:8080/jspbook/images/

apple.bmp

Page 8: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션의 폴더 구조

8/35 제 3 장

일반적인 웹 어플리케이션의 구조에는 반드시 WEB-INF 폴더와 web.xml 파일이 그 안에 존재한다 . 하지만 간단한 웹 어플리케이션인 경우에는 WEB-INF 폴더 및 web.xml 생략이 가능하다 .

영화제작과 비교하면 영화를 만드는 데에 있어서 뒤에서 일하는 스텝들과 같은 역할을 하는 파일 및 자원들은 모두 WEB-INF 폴더 내에 두어야 하며 WEB-INF 폴더 내의 파일 및 자원들은 웹 브라우저인 클라이언트에서 절대 접근할 수 없다 .

Page 9: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

1. 웹 어플리케이션 개념 및 폴더 구조웹 어플리케이션의 폴더 구조

9/35 제 3 장

폴더 또는 파일 설명

/웹 어플리케이션 폴더 /웹 어플리케이션의 루트 (ROOT) 폴더이다 . 웹 어플리케이션과 관련된 모든

HTML, JSP, Servlet, Java 클래스 , 이미지파일들이 이 폴더 밑에 저장된다 .

/웹 어플리케이션 폴더 /WEB-INF

웹 어 플 리 케 이 션 의 환 경 설 정 , 관 련 Serlvet 및 Utility 클 래 스 와

JavaBeans 와 라 이 브 러 리 들 을 위 치 시 키 는 폴 더 이 다 . 이 폴 더에 웹

어플리케이션 배치 정의자인 web.xml 이 위치한다 . 이곳에 위치한 파일은

클라이언트가 직접적으로 접근할 수 없다 .

/ 웹 어 플 리 케 이 션

폴더 /WEB-INF/web.xml웹 어플리케이션 배치 정의자 역할을 하는 파일이다 .

/웹 어플리케이션 폴더 /WEB-INF/classesServlet 및 JavaBeans 클래스를 포함한 여러 클래스들이 위치하는

폴더이다 .

/웹 어플리케이션 폴더 /WEB-INF/lib라이브러리 역할을 하는 jar 파일이 위치하는 폴더이다 . JDBC 드라이버나

태그 라이브러리를 구성하는 jar 파일이 여기 위치한다 .

/웹 어플리케이션 폴더 /WEB-INF/tld태그 라이브러리 관련 설정 파일들이 위치한다 . 태그 라이브러리는 19

장에서 학습한다 .

/웹 어플리케이션 폴더 /images

images 라는 이름 자체는 JSP/Servlet 컨테이너와 약속이 된 것은 아니지만

보통 이 폴더 내에 웹 어플리케이션과 관련된 모든 이미지 파일을 위치시킨

다 .

Page 10: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일의 Servlet 파일로의 자동 변환

2 장에서 만든 다음과 같은 파일이 있는지 확인하고 브라우저에서 실행해보자 .

그 다음 아래 경로 및 파일을 탐색기에서 확인해 보자 .

10/35 제 3 장

Tomcat 설치 폴더 \webapps\jspbook\ch02\helloworld.jsp

Tomcat 설치 폴더 (*.java)

\work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.java

Tomcat 설치 폴더 (*.class)

\work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.class

Page 11: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일의 Servlet 파일로의 자동 변환

JSP 파일은 실행이 될 때 일단 Servlet 인 Java 소스파일로 변환되고 다시 클래스 파일로 컴파일 됨

이 클래스 파일이 JSP/Servlet 컨테이너인 Tomcat 내에서 실행되어 그 결과가 최종적으로 웹 브라우저로 전달

11/35 제 3 장

Page 12: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일의 Servlet 파일로의 자동 변환

12/35 제 3 장

개발자에게 코딩하기 복잡한 Servlet 대신에 스크립트 언어인 JSP 로 작성하게 하고 JSP/Servlet 컨테이너인 Tomcat 이 내부에서 JSP 파일을 Servlet 으로 변환 및 컴파일하여 클래스 파일을 메모리에 적재한 후 실행하여 응답한다 .

0

1

0

2

0

3

0

4

0

5

0

6

0

7

<%@ page contentType="text/html;charset=utf-8" %>

<html>

<body>

<% out.println("Hello World!"); %> <br/>

<% out.println(" 안녕하세요 ."); %>

</body>

</html>

jspbook\ch02\helloworld.jsp

Page 13: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일의 Servlet 파일로의 자동 변환

13/35 제 3 장

package org.apache.jsp.ch02;

import javax.servlet.*;

import javax.servlet.http.*;

import javax.servlet.jsp.*;

public final class helloworld_jsp extends

org.apache.jasper.runtime.HttpJspBase

implements org.apache.jasper.runtime.JspSourceDependent {

... 중간 생략 ...

public void _jspInit() {

... 중간 생략 ...

}

public void _jspDestroy() {

}

public void _jspService(HttpServletRequest request, HttpServletResponse

response)

throws java.io.IOException, ServletException {

... 중간 생략 … }

Tomcat 설치 폴더 \work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.java

Page 14: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일의 Servlet 파일로의 자동 변환

14/35 제 3 장

try {

... 중간 생략 ...

out.write("\r\n");

out.write("<html>\r\n");

out.write("<body>\r\n");

out.println("Hello World!");

out.write(" <br/>\r\n");

out.println(" 안녕하세요 .");

out.write("\r\n");

out.write("</body>\r\n");

out.write("</html>\r\n");

} catch (Throwable t) {

. .. 중간 생략 ...

} finally {

_jspxFactory.releasePageContext(_jspx_page_context);

}

}

}

JSP 파 일 에 작성한 내용이 이 곳 에 존 재함 .

Tomcat 설치 폴더 \work\Catalina\localhost\jspbook\org\apache\jsp\ch02\helloworld_jsp.java ( 계속 )

out 객체의 write 메소드와 println 메소드가 JSP 파일의 내용을 출력시켜주는 역할을 수행

Page 15: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일 재요청시의 동작 과정

변환 및 컴파일 과정은 해당 JSP 를 웹 브라우저에서 맨 처음 요청했을 때에만 이루어지는 과정

한번이라도 요청했던 JSP 파일을 다시 임의의 사용자가 재요청하면 이미 메모리에 적재된 클래스를 재실행

JSP 로 작성된 웹 페이지의 대부분의 응답은 하드디스크에 대한 접근 없이 바로 메모리에서 응답을 주기 때문에 대체로 평균 응답 시간이 매우 짧다 .

15/35 제 3 장

Page 16: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계JSP 파일 수정 후 같은 JSP 재요청시의 동작 과정

JSP 의 장점 : JSP 를 수정하면 Tomcat 이 자동으로 변환 및 컴파일 수행

16/35 제 3 장

클래스 파일이 JSP 파일보다 이후에 만들어진 최신 클래스 파일인지 반드시 확인하여 수행 결과를 웹 브라우저로 보내준다

Page 17: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

2. JSP 의 처리 과정 및 Servlet 과의 관계종합적인 JSP 파일 처리 과정

17/35 제 3 장

SQL/JDBC

MySQL/Oracle

Page 18: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해Servlet 의 생성 배경 및 장점

JSP 은 Servlet 을 기반으로 한 기술

JSP 는 Servlet 을 대체하는 기술이 아니라 상호보완적인 기술

Servlet 은 기본적으로 Java 언어 기반이므로 Java 언어에 대한 프로그램 실력을 쌓는 것이 중요

18/35 제 3 장

Page 19: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해Servlet 의 생성 배경 및 장점

19/35 제 3 장

[Servlet 의 장점 ]∙Java 를 기반으로 하므로 Java API 를 모두 사용할 수 있다 .

∙ 쓰레드를 기반으로 하므로 웹 어플리케이션 서버 자원을 효율적으로 활용할 수 있다 .

∙ 웹 어플리케이션에서 효율적인 자료 공유 방법을 제공한다 .

∙ 비즈니스 로직과 프리젠테이션 로직을 분리할 수 있다 .

∙ 컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 효율적인 업무 분담이 가능하다 .

∙ 유지보수가 수월하다 .

∙ 기능 확장이 용이하다 .

∙Servlet 컨텍스트 리스너 및 필터 Servlet 등 고급 프로그래밍 기법을 통해 보다 효과적인 웹 어플리케이션 설계가 가능해진다 .

Page 20: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해Servlet 동작 과정과 생명주기

20/35 제 3 장

Page 21: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해Servlet 동작 과정과 생명주기

서블릿에 대한 사용자 요청 처리 과정 web.xml 파일을 참조해 URL 매핑 (URL Mapping) 을 확인 해당 Servlet 인스턴스로부터 스레드를 생성 service() 메소드 호출 즉 , 모든 사용자 요청에 대해 개별적인 service() 메소드가 호출 GET 또는 POST 요청을 구분하여 doGet() 또는 doPost() 메소드가

호출됨 따라서 Servlet 개발자는 doGet() 또는 doPost() 메소드에 대부분의

필요한 기능을 구현한다 .

21/35 제 3 장

Servlet 구조

Page 22: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해Servlet 동작 과정과 생명주기

Servlet 은 컴파일 과정이 필요하고 특정 클래스를 상속 받아 구현 javax.servlet.http.HttpServlet 클래스를 상속하여 구현

개발자가 구현해야 할 부분은 doGet() 또는 doPost() 메소드에 작성 하지만 , doGet() 메소드에서 다시 doPost() 를 호출하고 doPost()

내부에만 관련 처리 과정을 코딩하는 편이 편하다 .

22/35 제 3 장

javax.servlet.http.HttpServlet 을 상속받은 MyServlet 동작 구조

Page 23: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해클라이언트 요청 #1 - GET 방식

단순히 서버에 있는 정보를 가져오기 위해 사용 특징

HTML, 이미지 등을 웹 브라우저에서 가져오기 위한 일반적 방식 서버로의 데이터 전달은 QUERY_STRING 환경변수를 통해서 가능

QUERY_STRING: 요청 URL 에서 ‘ ?’ 이후의 값들 . ‘ 속성 = 값’ 형태로 사용해야 하며 ‘ &’ 는 여러 속성 값을 전달할 때 연결해주는 문자열이다 .

클라이언트에서 서버로 전달할 수 있는 데이터 크기 (QUERY_STRING ) 는 최대 240Byte 까지 가능하다 .

- 필요한 데이터를 검색할 때 필요한 key 값 등을 전달 요청 URL 에 값들이 노출되기 때문에 ‘보안 문제’가 생길 수 있다 . - 보내는 값이 URL 뒤에 붙어서 전송됨 : 주소창에서 노출이 가능 데이터 조회용 웹 애플리케이션에 적합

23/35 제 3 장

Page 24: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

3. Servlet 의 이해클라이언트 요청 #2 - POST 방식

클라이언트에 있는 정보를 서버로 올리기 위해 사용 특징

예를 들어 HTML 폼에 입력한 내용을 서버에 전달할 때 사용 서버에 전달할 수 있는 데이터 크기는 제한이 없다 URL 에 전달하려는 정보 값이 표시되지 않는다 . 그래서 로그인 정보를 전달할 때에는 POST 방식을 사용한다 . 데이터 저장용 웹 애플리케이션에 적합

24/35 제 3 장

Page 25: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

4. 첫번째 servlet 프로그램 -helloworldservlet

컴파일을 위한 환경 설정 일반적인 자바 프로그램의 라이브러리들이 위치한 곳

C:\Program Files\Java\jdk1.6.0_13\jre\lib 위 폴더의 rt.jar 에 대부분의 표준 라이브러리들이 위치 위 폴더에 있는 .jar 및 .class 들은 CLASSPATH 지원 없이 javac

프로그램 자체적으로 자동으로 검색하여 필요한 내용을 참조

Servlet 프로그램이 활용하는 라이브러리들이 위치한 곳 C:\apache-tomcat-6.0.18\lib 위 폴더의 servlet-api.jar 파일에 대부분의 라이브러리들이 위치 Servlet 소스 코드를 javac.exe 로 컴파일하기 위해서는 CLASSPATH

환경 변수에 등록 필요 컴파일시에 CLASSPATH 환경변수 값 설정 옵션 : -cp

25/35 제 3 장

javac -cp %CLASSPATH%;%CATALINA_HOME%\lib\servlet-api.jar

HelloWorldServlet.java

기존의 CLASSPATH 환경 변수들도 그대로 설정

TOMCAT 이 설치된 폴더(2 장에서 등록한 환경변수 )

Page 26: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

4. 첫번째 servlet 프로그램 -helloworldservlet

컴파일을 위한 환경 설정 컴파일된 class 파일이 위치해야 하는 곳

\웹 어플리케이션 폴더 \WEB-INF\classes 컴파일시에 컴파일된 class 파일이 위치해야 하는 곳 지정 옵션 : -d 웹 어플리케이션 폴더가 jspbook 일 때 다음과 같이 컴파일

– cp 와 – d 를 함께 사용하여 javac 명령을 새로 구성한 배치화일

26/35 제 3 장

javac -d %CATALINA_HOME%\webapps\jspbook\WEB-INF\classes

HelloWorldServlet.java

01

-

javac -cp %CLASSPATH%;%CATALINA_HOME%\lib\servlet-api.jar -d

%CATALINA_HOME%\webapps\jspbook\WEB-INF\classes %1

[ 예제 3.2 ] Java 설치 폴더 \bin\sjc.bat

sjc.bat 파일을 실행시킬 때 인자로 들어오는 Java 파일명으로 자동으로 대체됨

Page 27: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

Servlet 등록 및 URL 매핑 Servlet 을 작성하여 실행하려면 반드시 JSP/Servlet 컨테이너에

등록을 시키고 관련 URL 을 매핑하는 작업 필요 웹 어플리케이션의 배치 정의자 역할을 수행하는 web.xml 에 기록

27/35 제 3 장

엘리먼트 설명

<servlet>웹 어플리케이션 내에서 지칭하기 위한 Servlet 이름과 실제 Servlet

클래스 이름을 매핑하는 역할을 한다 .

<servlet-name>Servlet 이 름 </servlet-

name>웹 어플리케이션 내에서 지칭하는 Servlet 이름을 명기한다 .

<servlet-class> 클래스 이름 <servlet-class>실제 Servlet 클래스 이름을 명기한다 . 확장자 class 는 포함하지

않는다 .

</servlet> <servlet>엘리먼트의 종료태그

<servlet-mapping> Servlet 을 접근하기 위한 URL 을 정한다 .

<servlet-name>Servlet 이 름 </servlet-

name>URL 매핑을 원하는 Servlet 이름을 명기한다 .

<url-pattern>URL</url-mapping>Servlet 을 접근하기 위한 URL 을 명기한다 . 보통 "/" 으로 시작되며

"/" 의 의미는 웹 어플리케이션의 루트를 의미한다 .

</servlet-mapping> <servlet-mapping>엘리먼트의 종료태그

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 28: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

Servlet 등록 및 URL 매핑 컴파일한 서블릿을 “ http://localhost:8080/jspbook/helloServlet”

URL 로 접근하기 위한 서블릿 매핑 방법

28/35 제 3 장

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 29: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

Servlet 등록 및 URL 매핑 컴파일한 서블릿을

“ http://localhost:8080/jspbook/servlets/helloServlet” URL 로 접근하기 위한 서블릿 매핑 방법

<url-pattern> 태그 값에 “ /servlets/helloServlet” 입력

[ 실습 ] 단계 1 jspbook 폴더 밑에 WEB-INF 폴더 생성

29/35 제 3 장

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 30: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

30/35 제 3 장

4. 첫번째 servlet 프로그램 -helloworldservlet

[ 실습 ] – 단계 2 WEB-INF 폴더 내에 classes 폴더와 java_sources 폴더 생성

classes 폴더 명은 정확하게 기입 java_sources 폴더 명은 변경해도 상관없음

Page 31: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

[ 실습 ] – 단계 3 서블릿 코딩

31/35 제 3 장

01

02

03

04

05

06

07

08

09

10

-

11

12

13

14

15

16

17

18

19

20

import javax.servlet.*;

import javax.servlet.http.*;

import java.io.*;

public class HelloWorldServlet extends HttpServlet {

public void init() { // Servlet 객체 최초 생성시 한번만 호출 System.out.println("Init!!!");

}

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,

ServletException { // Servlet 요청시 매번 호출 System.out.println("doGet!!!");

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<html><body bgcolor=\"yellow\">Hello Servlet!</body></html>");

}

public void destroy() { // Servlet 이 메모리에서 삭제될 때 한번만 호출 System.out.println("destroy!!!");

}

}

[ 예제 3.1] jspbook\WEB-INF\java_sources\HelloServlet.java

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 32: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

[ 실습 ] – 단계 4 컴파일

WEB-INF 폴더 밑의 classes 에 서블릿 클래스가 생성되었는지 확인

32/35 제 3 장

> cd C:\apache-tomcat-6.0.18\webapps\jspbook\WEB-INF\

java_sources

> sjc HelloWorldServlet.java

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 33: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

[ 실습 ] – 단계 5 web.xml 에 서블릿 등록

33/35 제 3 장

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

<?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">

<description>

JSPBOOK Examples.

</description>

<display-name>JSPBOOK Examples</display-name>

<servlet>

<servlet-name>helloServlet</servlet-name>

<servlet-class>HelloWorldServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>helloServlet</servlet-name>

<url-pattern>/helloServlet</url-pattern>

</servlet-mapping>

</web-app>

[ 예제 3.2 ] jspbook\WEB-INF\web.xml

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 34: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

[ 실습 ] – 단계 5 웹 브라우저에서 실행

34/35 제 3 장

첫 번째 Servlet 인 helloServlet 수행 확인

http://localhost:8080/jspbook/helloServlet

4. 첫번째 servlet 프로그램 -helloworldservlet

Page 35: 3 장 .  웹 어플리케이션과 JSP  및  Servlet 의 이해

[ 실습 ] – 단계 6 cmd 창에서 출력 결과 확인

init() 메소드와 doGet() 메소드수행 확인

브라우저에서 새로고침할 때 마다 cmd 창 확인 새로고침할 때 마다 doGet() 메소드 수행 확인

35/35 제 3 장

4. 첫번째 servlet 프로그램 -helloworldservlet