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

3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

제3장

Page 2: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션의 개념

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

웹 어플리케이션 (Web Application)

웹 브라우저 상에서 수행되는 어플리케이션

웹 어플리케이션이 Tomcat 에서 구현될 때의 규칙

임의의 웹 어플리케이션은 webapps 폴더 하위에 하나의 폴더로 구성

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

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

Page 3: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션의 개념

3/35 제3장

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

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

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

webapps 폴더 내에 새로운 폴더 생성= 새로운 웹 어플리케이션 생성= 새로운 Context 생성 (ServletContext)

Page 4: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션의 개념

웹 어플리케이션은 오직 하나의 ServletContext와 매핑

서로 다른 두 개의 웹 어플리케이션은 독립적인 ServletContext 객체와매핑되어 각자 독립적인 공간에 자신만의 정보를 관리

ServletContext는 하나의 웹 어플리케이션 내에 여러 JSP 페이지와Servlet 들이 공동으로 활용할 수 있는 저장소로 활용

웹 어플리케이션 폴더와 URL간의 매핑

URL에 웹 어플리케이션 지정 없이 http://localhost:8080 으로 요청

webapps 폴더 밑의 ROOT 폴더로 접근

http://localhost:8080/hello.jsp webapps/ROOT/hello.jsp 파일 접근

4/35 제3장

Page 5: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션 폴더와 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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션의 폴더 구조

8/35 제3장

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

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

Page 9: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

웹 어플리케이션의 폴더 구조

9/35 제3장

폴더 또는 파일 설명

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

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

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

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

라이브러리들을 위치시키는 폴더이다. 이 폴더에 웹 어플리케이션 배치 정의

자인 web.xml이 위치한다. 이곳에 위치한 파일은 클라이언트가 직접적으로

접근할 수 없다.

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

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

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

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

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

학습한다.

/웹 어플리케이션 폴더/imagesimages라는 이름 자체는 JSP/Servlet 컨테이너와 약속이 된 것은 아니지만 보

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

Page 10: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

JSP 파일의 Servlet 파일로의 자동 변환

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

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

10/35 제3장

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

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

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

Page 11: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

JSP 파일의 Servlet 파일로의 자동 변환

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

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

11/35 제3장

Page 12: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

JSP 파일의 Servlet 파일로의 자동 변환

12/35 제3장

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

01

02

03

04

05

06

07

<%@ 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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

JSP 파일 재요청시의 동작 과정

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

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

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

15/35 제3장

Page 16: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

JSP 파일 수정 후 같은 JSP 재요청시의 동작 과정 JSP의 장점: JSP를 수정하면 Tomcat이 자동으로 변환 및 컴파일 수행

16/35 제3장

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

Page 17: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

2. JSP의 처리 과정 및 Servlet과의 관계

종합적인 JSP 파일 처리 과정

17/35 제3장

Page 18: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

3. Servlet의 이해

Servlet의 생성 배경 및 장점 JSP은 Servlet을 기반

으로 한 기술

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

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

18/35 제3장

Page 19: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

3. Servlet의 이해

Servlet의 생성 배경 및 장점

19/35 제3장

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

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

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

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

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

∙유지보수가 수월하다.

∙기능 확장이 용이하다.

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

Page 20: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

3. Servlet의 이해

Servlet 동작 과정과 생명주기

20/35 제3장

Page 21: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

3. Servlet의 이해

클라이언트 요청 #1 - GET 방식

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

특징

HTML, 이미지 등을 웹 브라우저에서 가져오기 위한 일반적 방식

서버로의 데이터 전달은 QUERY_STRING 환경변수를 통해서 가능

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

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

요청 URL에 값들이 노출되기 때문에 보안 문제가 생길 수 있다.

23/35 제3장

Page 24: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

3. Servlet의 이해

클라이언트 요청 #2 - POST 방식

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

특징

예를 들어 HTML 폼에 입력한 내용을 서버에 전달할 때 사용

서버에 전달할 수 있는 데이터 크기는 제한이 없다

URL에 전달하려는 정보 값이 표시되지 않는다.

그래서 로그인 정보를 전달할 때에는 POST 방식을 사용한다.

24/35 제3장

Page 25: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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_H

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

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

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

Page 27: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

Servlet 등록 및 URL 매핑

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

28/35 제3장

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

Page 29: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

30/35 제3장

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

[실습] – 단계 2

WEB-INF 폴더 내에 classes 폴더와 java_sources 폴더 생성

classes 폴더 명은 정확하게 기입

java_sources 폴더 명은 변경해도 상관없음

Page 31: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

[실습] – 단계 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, ServletExce

ption { // 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.2] jspbook\WEB-INF\java_sources\HelloServlet.java

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

Page 32: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

[실습] – 단계 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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

[실습] – 단계 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의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

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

34/35 제3장

첫 번째 Servlet인 helloServlet 수행 확인

http://localhost:8080/jspbook/helloServlet

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

Page 35: 3장 웹어플리케이션과 JSP 및 Servlet의이해link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter03.pdf · 10/35 제3장 Tomcat 설치폴더\webapps\jspbook\ch02\helloworld.jsp

[실습] – 단계 6

cmd 창에서 출력 결과 확인

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

브라우저에서 새로고침할 때 마다 cmd 창 확인

새로고침할 때 마다 doGet() 메소드 수행 확인

35/35 제3장

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