26
1. JSP Servlet을 활용한 동적 웹 프로그래밍 소개 1

1장. JSP 및 Servlet을활용한 동적웹프로그래밍소개link.koreatech.ac.kr/wp-content/uploads/2014/08/Chapter01.pdf · 1. 웹동작방식 WWW (World Wide Web) 인터넷상에분산되어존재하는온갖종류의정보를통일된

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

1장. JSP 및 Servlet을 활용한동적 웹 프로그래밍 소개

제1장

1. 웹 동작방식WWW (World Wide Web) 인터넷상에 분산되어 존재하는 온갖 종류의 정보를 통일된방법으로 찾아볼 수 있게 하는 광역 정보 서비스 및 소프트웨어

1989년 CERN (European Council for Nuclear Research)의Tim Berners-Lee가 제안

Web Server 내에서 Hypertext 형태의 Home Page라는 단위로보관 및 관리되며, Link라고 하는 기능에 의해 인터넷상에지리적으로 분산되어 있는 세계 각지의 Hypertext와 연결

인터넷 익스플로러(Internet Explorer), 파이어폭스(Firefox)

2/26 제1장

1. 웹 동작방식

웹클라이언트와 웹 서버간의 정보를 주고 받는 모습

HTTP (HyperText Transfer Protocol) 웹 클라이언트와 웹 서버 사이에 대화하는 방법 및 데이터정보를 웹 서버에서 웹 클라이언트로 전송하는 방법을 정의하는표준 프로토콜

http://로 시작되는 URL (Uniform Resource Locator)를입력함으로써 웹 서버의 데이터 정보를 획득 http://가 인터넷 프로토콜로서 HTTP를 사용하겠다는 의미

무상태(stateless) 프로토콜 서버가 클라이언트의 요청에 응답한 이후에 클라이언트의 상태에 대하여어떠한 것도 자체적으로 유지관리하지 않는다는 것

하부에서 데이터의 올바른 전송을 위해 TCP/IP 사용

3/26 제1장

1. 웹 동작방식

GET /index.html HTTP/1.0

HTTP 에 기반한 통신의 4 단계 1) 연결 설정하기

클라이언트는 디폴트로 서버의 포트 80번에 TCP 연결

2) 요청 메시지 전송하기 요청 라인

GET: 웹 서버로의 행위를 정의하는 메소드(method) GET, POST

index.html: 서버에 있는 파일에 대한 상대적 URL로서 요청대상 경로 HTTP/1.0: 클라이언트가 사용 중인 HTTP 프로토콜 버전

4/26 제1장

1. 웹 동작방식HTTP 에 기반한 통신의 4 단계 2) 요청 메시지 전송하기 (계속)

요청 헤더

헤더 정보들은 한 라인에 하나씩 기술

각 라인은 헤더 이름과 값으로 구성

헤더 정보의 끝에는 반드시 공백라인을 추가해서 요청 메시지의끝임을 서버에 알림

accept : image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,...

accept-language : ko

ua-cpu : x86

user-agent : Mozilla/4.0 (compatible; MSIE 7.0;...

...

...

...

[공백 라인]

5/26 제1장

1. 웹 동작방식HTTP 에 기반한 통신의 4 단계 2) 요청 메시지 전송하기 (계속)

웹 클라이언트가 서버에게 전달하는 정보들

http://www.thinkonweb.com/jspbook/ch01/requestInfo.jsp

6/26 제1장

1. 웹 동작방식HTTP 에 기반한 통신의 4 단계 3) 응답 메시지 전송하기

응답 라인

HTTP/1.0: 서버에서 운영중인 HTTP의 버전 정보 OK 200: 요청에 의한 현재 응답이 성공적으로 수행되었다는 것을나타냄

응답 코드 설명

100~199: 요청이 현재 처리되는 중 200~299: 성공 300~399: 리다이렉션(redirection) 400~499: 클라이언트 쪽의 에러 500~599: 서버 쪽의 에러

HTTP/1.0 OK 200

7/26 제1장

1. 웹 동작방식HTTP 에 기반한 통신의 4 단계 3) 응답 메시지 전송하기

응답 헤더

헤더 정보들은 한 라인에 하나씩 기술

각 라인은 헤더 이름과 값으로 구성

헤더 정보의 끝에는 반드시 공백라인을 추가해서 요청 메시지의끝임을 서버에 알림

브라우저는 공백 라인을보자마자 실제 HTML 문서를받을 준비를 함

4) 연결 끊기 클라이언트나 서버 혹은둘 다 연결을 닫는다.

Server: Apache

MIME-version:1.0

Content-type:text/html

Content-length: 107

[공백 라인]

<html>

<HEAD>

<Title>

A Sample HTML file

</Title>

</HEAD>

<body>

The rest of the document goes here

</body>

</html>8/26 제1장

1. 웹 동작방식

telnet을 통한 전자민원 웹 서버 접속시도

HTTP 프로토콜 실험 1) cmd 창에서 “telnet www.egov.go.kr 80” 입력

2) 다음을 입력하고 엔터GET /index.html HTTP/1.0

9/26 제1장

1. 웹 동작방식HTTP 프로토콜 실험 3) HTTP 응답 메시지 및 전자민원 웹 사이트의 첫 화면에해당하는 HTML 소스가 화면에 출력

전자민원 웹 사이트의 응답 메시지 및첫 화면의 HTML 소스

-지금까지 수행한 내용은 웹브라우저에서"http://www.egov.go.kr/"라는주소를 입력 한 후 엔터를입력했을 때 브라우저내부에서 발생되는 일과 동일

- 다만 브라우저는 전달받은응답 메시지 및 HTML 소스를해석하여 폰트의 사이즈 및색상을 조정하고 이미지 처리등을 수행

10/26 제1장

2. 웹 프로그래밍과 동적 웹 페이지정적 웹페이지의 한계 임의의 사용자가 페이지를 가져와서 브라우저상에 보기 전에이미 그 페이지의 모든 내용이 정해짐

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

<title>내 홈 페이지</title>

</head>

<body>

<table border=“0”>

<tr>

<td><h1>내 홈 페이지</h1></td>

</tr>

<tr>

<td>

<h4>환영합니다!</h4>

<h5>정적 웹페이지입니다.</h5>

</td>

</tr>

</table>

</body>

</html>

[예제 1.1] Tomcat 설치폴더\webapps\jspbook\ch01\welcome.html

정적 웹 페이지 수행 모습11/26 제1장

12/26

2. 웹 프로그래밍과 동적 웹 페이지

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

17

18

19

20

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

<html>

<head>

<meta http-equiv="Content-Type" content="text/html;charset=utf-8">

<title>내 홈 페이지</title>

</head>

<body>

<table border=“0”>

<tr>

<td><h1>내 홈 페이지</h1></td>

</tr>

<tr>

<td>

<%= “<h4>환영합니다!</h4>” %>

<% out.println("<h5>동적 웹페이지입니다.</h5>"); %>

</td>

</tr>

</table>

</body>

</html>

[예제 1.2] Tomcat 설치폴더\webapps\jspbook\ch01\welcome.jsp

동적 웹페이지 사용자가 페이지를 요청하는 시점에 그 페이지를 새롭게구성하는 행위를 수행

동적 웹 페이지 수행 모습

제1장

정적 웹 페이지와 동적 웹 페이지의 수행 방식 비교

2. 웹 프로그래밍과 동적 웹 페이지정적 vs. 동적 웹페이지

JSP 스크립트를 HTML으로 변환

13/26 제1장

전통적인 CGI 방식의 웹 요청 처리 방식

2. 웹 프로그래밍과 동적 웹 페이지전통적인 CGI 방식의 동적 웹 페이지 작성 기술 CGI (Common Gateway Interface)

정식 프로그래밍 언어나 스크립트가 아니라 웹 서버와 서버에서수행중인 일반 프로세스 사이에 정보를 주고받는 규칙

Perl, C, C++ 등의 언어를 지원 프로그램을 호출하여 개별 프로세스를 생성

14/26 제1장

2. 웹 프로그래밍과 동적 웹 페이지전통적인 CGI 방식의 동적 웹 페이지 작성 기술 CGI 방식의 문제점

각각의 클라이언트 요청에 대하여 독립적인 별도의 프로세스가생성

가령, 5개의 웹 브라우저가 똑같은 URL을 통하여 동일한 CGI 실행을 요청하면 요청 개수만큼 동일한 시간에 같은 프로세스를5개 생성

중복된 같은 요청에 대한 CGI의 대처 방법

15/26 제1장

어플리케이션 서버 방식의 웹 요청 처리 방식

2. 웹 프로그래밍과 동적 웹 페이지어플리케이션서버방식의동적웹페이지작성기술 어플리케이션 서버를 통하여 간접적으로 관련 스크립트를호출하여 수행

Tomcat이 바로 JSP 스크립트 엔진을 포함하는 어플리케이션서버의 대표적인 소프트웨어

16/26 제1장

2. 웹 프로그래밍과 동적 웹 페이지어플리케이션서버방식의동적웹페이지작성기술 CGI에 비해 가지는 장점

다수의 웹 브라우저가 같은 요청을 하더라도 어플리케이션 서버는관련된 스크립트에 대한 프로세스를 하나만 수행

CGI 방식에 비하여 CPU 점유도나 메모리 점유도에 있어서 상당히효율적

동시에 더 많은 웹 브라우저의 요청을 처리할 수 있다는 것을의미하며 이는 곧 안정적인 웹 서비스를 제공할 수 있는 기반

각 웹 요청에 대해서 어플리케이션 서버는 쓰레드 (Thread)로서처리

중복된 같은 요청에 대한 어플리케이션 서버 방식의 대처 방법

17/26 제1장

3. 스크립팅(Scripting) 기술

컴파일 코드 방식 스크립팅 코드 방식

종류CGI 관련 프로그램인 Perl, C, C++

과 서블릿 프로그램JSP, PHP, ASP

코드 형태컴파일된 기계어코드 (Binary Code) 또

는 바이트코드 (Byte Code)

컴파일되기 전 상태인 일반적인 스크립트

코드

컴파일 방

코드 구현 이후 컴파일과정을 직접 수행

해야 함

코드 구현 이후 컴파일과정은 웹 요청 시

자동으로 수행됨

코드 변경 코드를 직접 다시 재컴파일해야 함스크립트 내에서 코드를 수정만 하면 되며

재컴파일은 웹 요청 시 자동으로 수행됨

컴파일코드방식 vs. 스크립팅코드방식

18/26 제1장

3. 스크립팅(Scripting) 기술서버측 스크립팅 기술 ASP(Active Server Page)

마이크로소프트(Microsoft)의 대표적 기술 VBScript를 이용해서 매우 쉽게 배우고 사용할 수 있다. 기존에 이미 개발되어 있는 COM 객체를 활용함으로써 개발자들은필요한 프로그램을 코딩하는 시간을 줄일 수 있다.

닷넷 (.NET) 플랫폼 ASP.NET

단점 마이크로소프트에서개발한 운영 체제 및 개발 환경에 종속

값비싼 마이크로소프트 계열 운영 체제 및 데이터베이스와 통합 개발환경을 사용해야 한다.

19/26 제1장

3. 스크립팅(Scripting) 기술서버측 스크립팅 기술 PHP(Professional Hypertext Preprocessor)

Windows, Unix, Linux 운영체제에서 가장 빠르게 동작하는 웹사이트 구성 가능

오픈소스 모델로 개발되는 언어이기 때문에 다양한 운영 체제와 웹서버 환경에서 운영될 수 있도록 포팅

소규모 개발자들에게 매우 쉽게 접근할 수 있는 웹 개발 언어

가볍고 사용하기 쉽다

풍부한 DB 지원 기능을 제공 단점

일반적인 프로그래밍 언어가 가지고 있는 풍부한 기능이 부족

객체지향 (Object-oriented) 프로그래밍 언어가 가지고 있는 캡슐화, 상속성, 재사용성, 모듈화 특성이 PHP는 잘 구현되어 있지 않다.

중대형급 규모의 웹 어플리케이션 개발에는 잘 사용되지 않는다.

20/26 제1장

3. 스크립팅(Scripting) 기술서버측 스크립팅 기술 JSP (Java Server Page)

썬 마이크로시스템즈(Sun Microsystems)에서 개발한 Java 언어기반의 웹 스크립트 언어

스크립팅 기반의 웹 프로그래밍을 지원 서블릿은 컴파일 코드 방식을 따라야 하기 때문에 웹 개발자입장에서는 불편한 점이 많았다.

Java라는 훌륭한 객체지향 언어의 여러 가지 기능을 지원받는다. 클래스 라이브러리(Class libraries), 객체 지향적 코딩, 확실하고 풍부한보안, 언어 자체가 갖는 우아함

처리 효율면에서도 좋은 평가 웹 요청 시 이미 메모리에 적재된 서블릿 코드에서 바로 응답이 가능

코드의 유지관리 보수 측면에 많은 강점 MVC (Model-View-Controller) 모델

풍부한 클래스 라이브러리를 활용할 수 있다

21/26 제1장

3. 스크립팅(Scripting) 기술클라이언트측 스크립팅 기술 서버 측 스크립팅 기술

웹 서버 내에 코딩해 놓은 파일을 서버 측에서 동작하는어플리케이션 서버가 직접 처리하여 그 결과를 브라우저로보내주는 기술

클라이언트 측 스크립팅 기술

요청하는 파일을 그대로 브라우저로 전송하고 브라우저가 그 파일내에 있는 스크립트 언어를 해석하여 페이지 자체를 동적으로만들어 주는 기술

종류

자바스크립트(JavaScript) DHTML(Dynamic HTML) CSS (Cascading Style Sheet) Flash 와 관련된 Actionscript Ajax (Asynchronous JavaScript and XML)

최근 Web 2.0의 패러다임을 실현하기 위해서 클라이언트 측스크립팅 기술의 중요성이 크게 부각

22/26 제1장

4. 왜 JSP 인가?

Java의 컴퓨팅 플랫폼

Java의강력한컴퓨팅플랫폼기술활용

23/26 제1장

4. 왜 JSP 인가?프리젠테이션로직과비즈니스로직의분리 프리젠테이션로직(Presentation Logic)

브라우저 화면에서의 표현을 꾸미는 절차 및 기능

비즈니스로직(Business Logic) 사용자의 요청에 대한 내부적인 처리 절차 및 기능

JSP는 프리젠테이션 로직과 비즈니스 로직을 효율적으로분리하여 동적 웹 사이트를 구축할 수 있는 훌륭한 스크립트

왜 분리가 중요한가? 웹페이지의 디자인이 변경되더라도 내부 비즈니스 로직을처리하는 JSP 및 자바빈즈(Javabeans) 코드를 변경할 필요가 없기때문

결제 시스템 변경과 같은 비즈니스 로직이 완전히 바뀌는상황이라도 프리젠테이션 로직을 담당하는 코드에는 전혀 영향을미치지 않기 때문

24/26 제1장

4. 왜 JSP 인가?컴포넌트의재사용 많은 JSP 페이지나자바빈즈에서공통적으로사용되는컴포넌트를만들어이컴포넌트를계속해서재사용가능

주소 검색 기능, 한글 처리 기능, 데이터베이스 연결 기능 등을공통 컴포넌트로 개발

JSTL, EL, 커스텀태그등을활용한개발용이성 JSTL (Java Standard Tag Library) EL (Expression Language) 커스텀 태그 (Custom Tag) 웹 어플리케이션 개발을 용이하게 하고 동적 웹 사이트 개발시간을대폭적으로 단축시켜주는 용도로 활용이 가능

25/26 제1장

4. 왜 JSP 인가?서버자원의효율적관리 최초 요청 시에 해당 페이지에 대해 컴파일을 통하여 서블릿이구성되고 메모리로 적재

이후 요청들에 대해서는 이미 적재되어 있는 서블릿에서 바로응답

서버의 자원을 효율적으로 활용하면서 동시에 응답속도도상당히 빠르다.

JSP는 다른 언어에 비해 느리게 처리되는 편이 아니다. 웹 사이트의 응답 속도는 언어 자체의 영향 보다는 서버의 관리기술 및 로직 처리의 적정성 및 효율성에 더 많은 의존도가 있다.

26/26 제1장