1 장. JSP 및 Servlet 을활용한동적웹프로그래밍소개 제 1 장
WWW (World Wide Web) 1. 웹동작방식 인터넷상에분산되어존재하는온갖종류의정보를통일된방법으로찾아볼수있게하는광역정보서비스및소프트웨어 1989년 CERN (European Council for Nuclear Research) 의 Tim Berners-Lee가제안 Web Server 내에서 Hypertext 형태의 Home Page 라는단위로보관및관리되며, Link 라고하는기능에의해인터넷상에지리적으로분산되어있는세계각지의 Hypertext 와연결 인터넷익스플로러 (Internet Explorer), 파이어폭스 (Firefox) 2/26 제 1 장
HTTP (HyperText Transfer Protocol) 1. 웹동작방식 웹클라이언트와웹서버사이에대화하는방법및데이터정보를웹서버에서웹클라이언트로전송하는방법을정의하는표준프로토콜 http:// 로시작되는 URL (Uniform Resource Locator) 를입력함으로써웹서버의데이터정보를획득 http:// 가인터넷프로토콜로서 HTTP 를사용하겠다는의미 무상태 (stateless) 프로토콜 서버가클라이언트의요청에응답한이후에클라이언트의상태에대하여어떠한것도자체적으로유지관리하지않는다는것 하부에서데이터의올바른전송을위해 TCP/IP 사용 웹클라이언트와웹서버간의정보를주고받는모습 3/26 제 1 장
HTTP 에기반한통신의 4 단계 1) 연결설정하기 클라이언트는디폴트로서버의포트 80 번에 TCP 연결 1. 웹동작방식 2) 요청메시지전송하기 요청라인 GET /index.html HTTP/1.0 GET: 웹서버로의행위를정의하는메소드 (method) GET, POST index.html: 서버에있는파일에대한상대적 URL로서요청대상경로 HTTP/1.0: 클라이언트가사용중인 HTTP 프로토콜버전 4/26 제 1 장
HTTP 에기반한통신의 4 단계 2) 요청메시지전송하기 ( 계속 ) 요청헤더 헤더정보들은한라인에하나씩기술 각라인은헤더이름과값으로구성 1. 웹동작방식 헤더정보의끝에는반드시공백라인을추가해서요청메시지의끝임을서버에알림 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 OK 200 HTTP/1.0: 서버에서운영중인 HTTP 의버전정보 OK 200: 요청에의한현재응답이성공적으로수행되었다는것을나타냄 응답코드설명 100~199: 요청이현재처리되는중 200~299: 성공 300~399: 리다이렉션 (redirection) 400~499: 클라이언트쪽의에러 500~599: 서버쪽의에러 7/26 제 1 장
HTTP 에기반한통신의 4 단계 3) 응답메시지전송하기 응답헤더 4) 연결끊기 헤더정보들은한라인에하나씩기술 각라인은헤더이름과값으로구성 1. 웹동작방식 헤더정보의끝에는반드시공백라인을추가해서요청메시지의끝임을서버에알림 Server: Apache 브라우저는공백라인을 MIME-version:1.0 보자마자실제 HTML 문서를 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 장
HTTP 프로토콜실험 1) cmd 창에서 telnet www.egov.go.kr 80 입력 1. 웹동작방식 telnet 을통한전자민원웹서버접속시도 2) 다음을입력하고엔터 GET /index.html HTTP/1.0 9/26 제 1 장
HTTP 프로토콜실험 1. 웹동작방식 3) HTTP 응답메시지및전자민원웹사이트의첫화면에해당하는 HTML 소스가화면에출력 전자민원웹사이트의응답메시지및첫화면의 HTML 소스 - 지금까지수행한내용은웹브라우저에서 "http://www.egov.go.kr/" 라는주소를입력한후엔터를입력했을때브라우저내부에서발생되는일과동일 - 다만브라우저는전달받은응답메시지및 HTML 소스를해석하여폰트의사이즈및색상을조정하고이미지처리등을수행 10/26 제 1 장
2. 웹프로그래밍과동적웹페이지 정적웹페이지의한계 임의의사용자가페이지를가져와서브라우저상에보기전에이미그페이지의모든내용이정해짐 01 <html> 02 <head> 03 <meta http-equiv="content-type" content="text/html;charset=utf-8"> 04 <title> 내홈페이지 </title> 05 </head> 06 <body> 07 <table border= 0 > 08 <tr> 09 <td><h1> 내홈페이지 </h1></td> 10 </tr> 11 <tr> 12 <td> 13 <h4> 환영합니다!</h4> 14 <h5> 정적웹페이지입니다.</h5> 15 </td> 16 </tr> 17 </table> 18 </body> 19 </html> [ 예제 1.1] Tomcat 설치폴더 \webapps\jspbook\ch01\welcome.html 정적웹페이지수행모습 11/26 제 1 장
2. 웹프로그래밍과동적웹페이지 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 12/26 동적웹페이지 사용자가페이지를요청하는시점에그페이지를새롭게구성하는행위를수행 [ 예제 1.2] Tomcat 설치폴더 \webapps\jspbook\ch01\welcome.jsp <%@ 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. 웹프로그래밍과동적웹페이지 정적 vs. 동적웹페이지 정적웹페이지와동적웹페이지의수행방식비교 JSP 스크립트를 HTML 으로변환 13/26 제 1 장
2. 웹프로그래밍과동적웹페이지 전통적인 CGI 방식의동적웹페이지작성기술 CGI (Common Gateway Interface) 정식프로그래밍언어나스크립트가아니라웹서버와서버에서수행중인일반프로세스사이에정보를주고받는규칙 Perl, C, C++ 등의언어를지원 프로그램을호출하여개별프로세스를생성 전통적인 CGI 방식의웹요청처리방식 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) 기술 컴파일코드방식 vs. 스크립팅코드방식 종류코드형태컴파일방법코드변경 컴파일코드방식 CGI 관련프로그램인 Perl, C, C++ 과서블릿프로그램 컴파일된기계어코드 (Binary Code) 또는바이트코드 (Byte Code) 코드구현이후컴파일과정을직접수행해야함 코드를직접다시재컴파일해야함 스크립팅코드방식 JSP, PHP, ASP 컴파일되기전상태인일반적인스크립트코드코드구현이후컴파일과정은웹요청시자동으로수행됨스크립트내에서코드를수정만하면되며재컴파일은웹요청시자동으로수행됨 18/26 제 1 장
서버측스크립팅기술 ASP(Active Server Page) 3. 스크립팅 (Scripting) 기술 마이크로소프트 (Microsoft) 의대표적기술 VBScript 를이용해서매우쉽게배우고사용할수있다. 기존에이미개발되어있는 COM 객체를활용함으로써개발자들은필요한프로그램을코딩하는시간을줄일수있다. 닷넷 (.NET) 플랫폼 단점 ASP.NET 마이크로소프트에서개발한운영체제및개발환경에종속 값비싼마이크로소프트계열운영체제및데이터베이스와통합개발환경을사용해야한다. 19/26 제 1 장
서버측스크립팅기술 PHP(Professional Hypertext Preprocessor) 3. 스크립팅 (Scripting) 기술 Windows, Unix, Linux 운영체제에서가장빠르게동작하는웹사이트구성가능 오픈소스모델로개발되는언어이기때문에다양한운영체제와웹서버환경에서운영될수있도록포팅 소규모개발자들에게매우쉽게접근할수있는웹개발언어 가볍고사용하기쉽다 풍부한 DB 지원기능을제공 단점 일반적인프로그래밍언어가가지고있는풍부한기능이부족 객체지향 (Object-oriented) 프로그래밍언어가가지고있는캡슐화, 상속성, 재사용성, 모듈화특성이 PHP 는잘구현되어있지않다. 중대형급규모의웹어플리케이션개발에는잘사용되지않는다. 20/26 제 1 장
서버측스크립팅기술 JSP (Java Server Page) 3. 스크립팅 (Scripting) 기술 썬마이크로시스템즈 (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 장
Java 의강력한컴퓨팅플랫폼기술활용 4. 왜 JSP 인가? Java 의컴퓨팅플랫폼 23/26 제 1 장
프리젠테이션로직과비즈니스로직의분리 프리젠테이션로직 (Presentation Logic) 브라우저화면에서의표현을꾸미는절차및기능 비즈니스로직 (Business Logic) 사용자의요청에대한내부적인처리절차및기능 4. 왜 JSP 인가? 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 장