출처 : 

http://webcache.googleusercontent.com/search?q=cache:http://kbp.kongju.ac.kr/cg_edu/cnu/web_server_basic.htm&gws_rd=cr&ei=7fK_Vu-JJqiHmgWGq43oAg


http://j2enty.tistory.com/entry/JSP-Chapter1-%EC%9B%B9-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EA%B8%B0%EC%B4%88-2



 웹 서 버   구 축 을   위 한   기 초


웹서버(web Server)란 : 웹서버 간단히 웹을 서비스하는 컴퓨터라고 할 수 있다. 웹페이지는 HTML이므로 웹서버는 "HTML파일들을 모아놓고 서비스하는 컴퓨터"라고 할 수도 있다.  모든 컴퓨터는 서버가 될 수 있으므로 웹 서버가 될 수도 있지만, 어떤 컴퓨터를 웹 서버로 만드려면 먼저 웹 서버 프로그램을 설치해야 한다. 웹 서버 프로그램으로는 PWS, IIS, 아파치 등이 있다.


웹 클라이언트(Web Client)란 : 서버와는 상대되는 개념으로 클라이언트는 어떤 서비스를 요청하는 역할을 하게 된다. 그러므로 웹 클라이언트는 "웹 서버에 자료를 요청하기 위해 "HTTP"를 사용하는 클라이언트 프로그램"이라고 할 수 있다.  웹 페이지를 요청하는 것도 클라이언트라고 할 수 있다. 그런데 웹 페이지 요청은 대부분 웹 브라우저가 하게 된다. 그러므로 일반적으로 웹 클라이언트를 웹 브라우저라고 일컫기도 한다.  


서버 사이드(server Side)란 : 서버사이드(Sever-Side)란 간단히 "웹 서버측에서 하는 작업들"이라고 말할 수 있다.  여기서 말하는 작업이란 구체적으로 웹 브라우저(클라이언트)에서 넘어온 자료를 데이터베이스에 저장 한다든지, 어떤 수학적인 계산을 하여 결과를 만들어 낸다든지 하는 것을 말한다. 이런 작업을 담당하는 것이 웹 프로그램이다. 웹 프로그램의 종류는 PHP, ASP, Perl, Python등이 많이 쓰인다.


클라이언트 사이드(Client Side)란 : 웹 브라우저(클라이언트 사이드)를 사용하면 서버의 작업량을 줄일 수 있다. 서버가 작업해야 할 부분중에서 클라이언트가 할 수 있는 작업을 스스로 처리하기 때문에 서버의 작업량을 줄여줄 수 있어 효율적이다. 이렇게 "클라이언트 스스로 일을 처리할 수 있도록 하여 서버의 효율성을 높일 수 있도록 하는 것"이 클라이언트 사이드 언어이다.  클라이언트 사이드 언어로는 자바스크립트(Java Script)와 이외의 대부분의 스크립트 언어가 있다. 플래시 액션(Action) 스크립트도 클라이언트 사이드 언어라고 할 수 있다. 이런 스크립트 언어는 웹 서버에서 웹 브라우저로 전송된 후 실행된다.



■ 계열별 웹서버의 종류

- Windows : IIS, PWS, httpds, NCSA httpd For Windows, SerWeb, Web4Ham

- Unix, Linux : Apache, CERN httpd, NCSA httpd, EIT httpd, GN Gopher/http, Plexus perl server, WebWorks Enterprise server,

  Netsite Communication Server and Netsite Commercial Server

- Mac : MacHTTP

- NETWare : httpd nlm



■ 각 계열별 대표적인 웹서버

- Windows 계열 : IIS(Internet Information Services)

NT급에서 기본적으로 지원되는 웹서버로 ASP(Active Server Page)라는 개발 언어를 지원한다. 1995년 말 윈도우 NT용 웹서버로 출시 되었으며 윈도우 4.0이 출시되면서 IIS 2.0을 기본적으로 탑재 하였지만 얼마 후 ASP기술이 나오면서 IIS3.0이 새로 출시되었다. 윈도우 NT에서 IIS3.0이상 버전을 설치하기 위해서 별도의 OPTION PACK과 SERVICE PACK을 설치해 주어야 한다.

Windows 2000서버 및 Windows XP Pro에는 IIS 5.0이 포함되어있다.

- Unix, Linux 계열 : Apache, NCSA

아파치 프로젝트의 시작은 처음 1995년경 대중의 사랑을 받던 NCSA의 개발자중 일부가 모여 시작 했습니다. 이것을 시발로 NCSA HTTPD 개발자와 아파치 개발자들이 합류되고 이전에 만들어졌던 아파치 0.6.2를 완전히 개선한 0.8.8을, 그리고 아파치 1.0을 1995년10월에 만들어 냈습니다. 현재(2000년기준)는 60%이상의 사용자를 확보 하고 있다.


■ 웹서버 구축에 필요한 것들 (PHP, APACHE, MySQL)

- PHP(Professional HyperText Preprocessor) : 서버에서 해석되는 HTML에 내장되어 동작하는 스크립트 언어이다.  C, Java, Perl 등에서 많은 문장 형식을 빌려왔으며 웹 브라우저 등으로 실제 코드를 볼 수 없다는 것에 보안상 유리한 점도 있습니다. PHP와 ASP는 근본적으로 서버용 객체 지향적인 스크립트 언어라는 점에서 같지만, ASP의 경우 IIS, PWS와 같은 윈도우 환경에서 움직이는 서버를 지원하는데 반해 PHP는 Apache, IIS, PWS, 서버 등과 유닉스 윈도우 환경에서 움직이는 모든 서버를 지원합니다.

- APACHE : 대중의 힘을 바탕으로 가장 큰 인지도를 얻을 만큼 사용자가 이끌어 가는 무료 웹 서버입니다.

- MySQL : 무료 데이터베이스(DB)

 


웹 프로그래밍 기

1. 웹 어플리케이션과 웹 프로그래밍
 -.웹 어플리케이션 : 웹을 기반으로 실행되는 어플리케이션
 -.일반적으로 웹 브라우저에 기능을 요청하고 요청을 받은 웹 어플리케이션은 요청한 기능에 알맞은 결과 화면을 생성해서 웹   브라우저에 전송한다. 일반적으로 웹 브라우저가 요청한 기능을 제공하기 위해서는 웹 서버, 어플리케이션 서버, 데이터   베이스 와 같은 구성요소들을 필요로 한다. 



-.웹 서버 : 웹 브라우저의 요청을 받아 알맞은 결과를 웹 브라우저에 전송한다. 만약 프로그램의 처리가 필요하다면 어플리케이션 서버를 사용하거나 프로그램을 직접 호출하여 결과를 생성한다. 주로 정적인 HTML, CSS, 이미지 자바 스크립트를 웹 브라우저에 제공할 때 웹 서버가 사용된다. (아파치)

// IIS 등.
-.웹 어플리케이션 서버 (WAS): 게시글 목록, 로그인 처리와 같은 기능을 실행(처리)하고 그 결과를 응답으로 웹 서버에 전달한다.  (톰캣, 웹로직, JBoss 등) // ASP 등이 포함됨
-.데이터베이스 : 웹 어플리케이션이 필요로 하는 데이터를 저장한다. (오라클, MySQL, MS-SQL 등)
-.웹 브라우저 : 웹 서버에 서비스 실행을 요청하며 웹 서버의 처리 결과를 사용자에게 보여준다. (익스플로러, 크롬 등) 


 -.어플리케이션 서버도 웹 서버와 마찬가지로 정적인 HTML, CSS 등을 제공할 수 있다. 하지만 웹 서버에서 정적인 HTML, 이미지 등을 제공하고 어플리케이션 서버가 프로그램을 제공하는 이유는 성능 때문이다. 일반적으로 아파치와 같은 웹 서버는 정적인 HTML, CSS를 제공하는데 초점이 맞춰져 있고, 톰캣이나 웹 로직과 같은 어플리케이션 서버는 JSP, 서블릿과 같은 프로그램을 실행하여 결과를 제공하는 데 초점이 맞춰저 있기 때문이다.

1.1 CGI방식과 어플리케이션 서버 방식
 -. 웹 어플리케이션은 웹 브라우저의 요청을 알맞게 처리하고 그에 대한 결과를 웹 브라우저에 전달한다. 웹 어플리케이
션이 실행되는 과정은 아래의 그림과 같다. (요청-처리-응답)


 위 그림의 2번에서 웹 서버는 웹 어플리케이션 프로그램을 사용해서 우베 브라우저의 요청을 처리한다. 이 때 웹 서버가 웹 어플리케이션을 실행하는 방식에 따라서 CGI방식, 어플리케이션 서버 방식으로 동작방식을 구분할 수 있다.
(Common Gateway Interface, CGI : 웹 서버와 프로그램 사이에 정보를 주고받는 규칙을 의미. 흔히 CGI 프로그래밍이라고 하면 Perl, C/C++언어 등을 사용하여 웹 서버를 통해서 실행할 수 있는 프로그램을 의미한다.)

 CGI 방식과 어플리케이션 서버 방식간의 차이점웹 서버가 직접 프로그램을 호울하는지의 여부에 있다. 먼저 CGI방식은 웹 서버가 어플리케이션을 호출하는 구조를 갖는다. 이에 반해 어플리케이션 서버 방식은 웹 서버가 직접 프로그램을 호출하기보다는 웹 어플리케이션 서버를 통해서 간접적으로 어플리케이션 프로그램을 실행한다.
 접속자가 많은 서비스의 경우 CGI방식보다 어플리케이션 서버 방식의 성능이 좋게 나타난다. 그 이유는 CGI방식의 경우에는 요청 받은 기능이 같은 프로그램을 실행하는 경우라 하더라도 요청이 발생하는 숫자만큼 프로그램을 실행하기 때문에 메모리를 많이 차지하게 된다. 반면에 어플리케이션 서버방식의 경우에는 동시에 여러 웹 브라우저가 동일한 프로그램을 요청하더라도 한 개에 해당하는 메모리만 사용하기 때문에 전체적으로 사용하는 메모리가 적다. 
 
1.2 스크립트 방식과 실행 코드 방식
 웹 어플리케이션 프로그래밍은 구현하는 방식에 따라 실행 코드 방식과 스크립트 방식으로 구분할 수 있다. 

비교 항목 실행 코드 방식 스크립트 방식 
코드 형태  컴파일 된 실행 프로그램  컴파일 되지 않은 스크립트 코드 
실행 방식 컴파일 된 기계어 코드 직접 실행  스크립트 코드를 해석한 뒤 실행 
코드 변경  소스 코드를 다시 컴파일 해야 함  스크립트 코드만 고치면 됨 
종류  C기반 CGI 프로그램 JSP, ASP.net, PHP, Ruby ... 



-.스크립트 코드의 번역은 최초 요청에 대해서 한 번만 발생하며, 이후의 요청에 대해서는 번역 과정 없이 앞서 번역된 코드를 실행하도록 함으로써 번역 횟수를 최소화한다.
-.실행코드 방식의 경우 일반적으로 CGI방식이고 스크립트 코드 방식인 JSP나 ASP는 어플리케이션 서버 방식이기 때문에 전체 처리량에서는 JSP/ASP 기반의 스크립트 코드 방식이 앞선다.
-.기술의 발달로 스크립트 언어를 번역한 코드가 일반 프로그램과 동일한 수준의 성능을 제공하고 있다. 




2. URL과 웹 어플리케이션 주소
 -.사이트에 연결할 때 다음과 같은 형식의 주소를 웹 브라우저에 입력한다.
  이 주소는 자원을 구분할 때 사용되는 문자열로서 이런 문자열을 URL(Uniform Resource Locator)라고 부른다.

http://java.sun.com/javase/6/docs/api./index.html

[프로토콜]://[호스트][:포트][경로][파일명][.확장자][쿼리문자열] 

-.프로토콜 : 서버와 클라이언터의 통신 규약(http. https)
-.호스트 : 클라이언트가 접속할 서버 주소
-.포트 : 서버와 클라이언트가 통신할 때 사용할 포트. 일반적으로 입력하지 않으며 입력하지 않을 경우 기본포트(80)이 사용
-.[경로][파일명][.확장자] : 서버에서 가져올 자원의 위치를 입력하낟. 
-.[쿼리문자열] : 주소 뒤에 붙는 정보로 '파라메터'라고 불리는 데이터를 웹 어플리케이션에 전달할 때 사용된다. [쿼리문자열]은 물음표(?)를 이용하여 경로 부분과 구분되며 1개이상의 파라메터 이름과 값을 같는다. 



3. 자바와 웹 프로그래밍
3.1 서블릿과 JSP
 -.서블릿 : 자바를 개발한 Sun에서 웹 개발을 위해 만든 표준, 이러한 서블릿 규약에 따라 만든 클래스를 서블릿 이라 부름
 -.서블릿을 만들기 위해선 자바 코드를 작성하고 컴파일 하여 클래스 파일을 만들게 된다.(앞서 말한 실행코드 방식) 이런 방식은 데이터를 조금만 바꾸고 싶어도 코드를 수정하고 컴파일하고 클래스를 알맞는 곳에 복사해줘야 하는 작업을 해야한다.

 -.JSP : 위와 같은 서블릿의 단점을 보완하여 만든 스크립트 방식의 표준
 -.JSP는 서블릿 표준을 기반으로 만들어졌다. 때문에 내부적으로 JSP파일이 변역되면 최종 결과물로 서블릿이 만들어진다. 

3.2 JSP (JavaServer Pages) 란?
 -.자바 언어를 기반으로 하는 스크립트 언어로 자바가 제공하는 기능을 그대로 사용 할 수 있다.
 -.HTTP와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
 -.HTML, XML등 클라이언트가 요청한 문서를 생성하는 데 주로 사용된다.
 -.서블릿/EJB등의 엔터프라이즈 기술들과 잘 융합된다.
 -.표현언어, 표현식, 스크립트릿 등 다양한 스크립트 요소와 액션 태그 등을 제공함으로써 보다 쉽게 웹 어플리케이션을 프로그래밍 할 수 있도록 도와준다.

3.3 웹 컨테이너(Web Container)
 -.웹 컨테이너 : 이름 그대로 웹 어플리케이션을 실행 할 수 있는 컨테이너.
 

JSP 컨테이너 + 서블릿 컨테이너 = 웹 컨테이너

현재 서블릿 규약의 버전은 2.5이고, JSP 규약 버전은 2.1이다. 이 두 규약의 버전 차이에서 알 수 있듯이 서블릿 규익이 먼저 발표되고 그 후 JSP규익이 발표되었다. 처음 서블릿 규약이 발표되었을 때는 JSP가 존재 하지 않았기 때문에 서블릿이 실행 가능한 서버를 서블릿 컨테이너라고 불렀으며 이후 JSP 규약이 발표될 때는 서블릿과 구분하는 의미에서 JSP가 실행 가능한 서버를 JSP 컨테이너 라고 불렀다. 하지마 이 후 거의 모든 엔진이 서블릿과 JSP를 동시에 지우너하면서 이 두 컨테이너를 구분하는게 무의미 해졌으며, 이 후 부터는 서블릿 컨테이너와 JSP 컨테이너를 웹 컨테이너 라고 부르기 시작했다.


3.4 JSP를 사용하는 이유

-.자바 언어를 기반으로 하고 있기 때문에 플랫폼에 상관없이 사용할 수 있다.
-.자바 언어에 대한 깊은 이해가 없더라도 빠르게 배울 수 있다.
-.대규모 어플리케이션을 구현 할 때 사용되는 스프링, 스트럿츠와 같은 프레임워크와 완벽하게 연동되며, 금융권에서 많이 사용하는 EJB기술과도 완벽하게 연동된다. 






'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글

HTML 기초  (0) 2016.02.21
비즈니스 로직(Business logic)?  (0) 2016.02.14
웹서버(Web Server) / 웹 서버 어플리케이션(WSA)  (0) 2016.02.14
웹 프로그래밍 기초  (0) 2016.02.14
ASP(Active Server Page)  (0) 2016.01.28
IIS란?  (0) 2016.01.25
Posted by GENESIS8

댓글을 달아 주세요