posted by changhozz 2012. 8. 14. 21:07

서블릿 ㅡ>

자바언어를 개발한 Sun Microsystems에서 웹 개발을 위해 만든 표준이 서블릿(Servlet)이다. 서블릿 규약에 따라 만든 클래스를 서블릿이라고 부른다.
서블릿을 만들기 위해서는 자바 코드를 작성하고, 코드를 컴파일 해서 클래스 파일을 만들게 된다. 즉,  서블릿은 *실행 코드 방식에 속한다.
따라서 서블릿을 이용하여 웹 어플리케이션을 개발할 경우 화면에 출력되는 데이터를 조금만 바꾸고 싶어도 코드를 수정하고 컴파일하고 클래스를 알맞은 곳에 복사해 주는 작업을 반복해 주어야 했다.
이런 반복 작업은 개발 효율성을 떨어뜨리는 요인이 되었다.

이후, Sun은 서블릿의 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만들었다. JSP는 코드를 수정하면 바로 변경 내역이 반영되었기 때문에 2000년 JSP 1.1과 2001년 JSP 1.2가 출시되면서, 웹 어플리케이션을 개발하는 데 사용되는 주요 기술로 자리 잡기 시작했다.


JSP 표준은 서블릿 표준을 기반으로 만들어졌다. 내부적으로 JSP파일이 번역되면 최종 결과물로 서블릿이 만들어 진다. 따라서 이 두 표준은 쌍으로 발전하고 있다. 예를 들어, 서블릿 2.3버전과 JSP 1.2버전이 한 쌍이고,
서블릿 2.4버전과 JSP 2.0버전이 한 쌍이다. 그리고 내가 배우는 책에서 설명하는 JSP2.1버전은 서블릿 2.5버전과 쌍을 이루고 있다.



JSP표준이 서블릿 표준에 의존하고 있기 때문에, JSP의 동작 방식을 완벽하게 이해하기 위해서는 서블릿에 대한 이해가 필요하다.
 하지만, 서블릿을 모르더라도 JSP를 이용해서 어느 수준까지 웹 어플리케이션 을 개발할 수 있다. 
 


-------------------------------------------------------------------

또 다른 설명,


1. 서블릿이란 ?

자바를 이용해서 웹상에 실행되는 프로그램을 작성하는 기술
서블릿은 컴파일 과정이 플요하고 특정 클래스를 상속 받아야만 구현이 가능한 구조.
JSP : 텍스트 파일 구조
서블릿 : 자바 클래스 구조이다

2. JSP란

서블릿이 가진 HTML 표현상의 문제를 해결하기 위함이다.
서블릿은 프로그램 내에서 HTML 을 처리하기 때문에 간단한 태그를 변경할
때조차 재 컴파일 해야하는 문제가 있다. 이러한 이유로 웹 디자이너는
화면을 마음대로 바꿀수 없었고 이러한 문제점을 해결하기 위해 비지니스 로직과
콘텐츠를 분리하기 위한 노력이 있었고 JSP의 탄생이다.

3. 웹 개발시 서블릿을 사용하면 좋은점

1)콘텐츠와 비지니스 로직을 분리할 수 있다.
2)컨트롤러와 뷰의 역할 분담으로 인해 웹 디자이너와 개발자 간의 원할한 작업이 가능하다.
3)유지보수가 수월하다.
4)기능 확장이 용이하다.

----------------------------------------------------------------

또 다른 설명,

▣ 서블릿(Servlet)

서블릿(Servlet)이란 "Server" + "Let"의 합성어로써, 말 그대로 서버에서 실행되는 프로그램을 의미한다.

즉,'Server에 application을 허용(Let) 한다.'라는 의미.

클라이언트의 요청에 따라 서버에서 서블릿을 실행하고 그 결과를 클라이언트에게 전송하는 방식으로 동작된다.

□ 서블릿(Servlet)
◇ Server + Let
◇ 서버에서 실행되는 프로그램

▣ 서블릿의 구성

서블릿은 웹에서 사용 가능한 자바 프로그램을 구현하기 위한 방법으로써,
자바 기반의 확장 CGI 애플리케이션을 구현하기 위해 사용된다.

□ 서블릿의 구성
◇ 웹에서 사용 가능한 자바 프로그램을 구현하기 위한 프로그래밍 방법
◇ 자바 기반의 확장 CGI 애플리케이션을 구현하기 위한 언어

▣ 서블릿을 실행하기 위한 필요조건

서블릿은 자바 기반이기 때문에 당연히 JDK(Java Development Kit)가 설치되어 있어야 한다.
또한 서블릿을 이용해서 서비스를 제공하기 위해 서블릿이 실행될 수 있는

서블릿 컨테이너(Servlet Container)가 필요하다.

□ 서블릿을 실행하기 위한 필요조건
◇ JDK
◇ 서블릿 컨테이너

대표적인 서블릿 컨테이너로는 Tomcat, Resin, Web Sphere 등이 있다.

-----------------------------------------------------------------------------------


JSP란?(Java Server Page)
동적으로 웹페이지를 생성하기 위한 자바기반의 서버측 기술이다. 즉 , jsp사양은 HTML과 XML 템플릿들 그리고
안전하며 빠른 서버 플랫폼에 독립적인 자바코드를 이용하여 동적으로 클라이언트에게 제공 되어질 페이지를
생성하기 위한 프레임웍을 제공하고 있다.

JSP[제이 에스 피]서블릿의 사용을 통해 웹페이지의 내용이나 모양을 제어하는 기술이다. 자바의 개발자인 썬마이크로시스템즈에서는 JSP 기술이 서블릿 API라고 말하고 있다. JSP는 마이크로소프트의 ASP 기술에 필적한다. JSP가 웹서버에 의해 실행될 자바프로그램을 호출하는데 반하여, ASP는 페이지가 사용자에게 보내지기 전에 스크립트 인터프리터(VBScript 또는 JScript와 같은)에 의해 해석될 스크립트를 포함시킨다.

자바 서블릿으로 가는 링크를 포함한 HTML 페이지는 파일이름 확장자에 .JSP가 붙는다.



Java에서 서블릿이란?
서블릿은 기존의 CGI(Common Gateway Interface) 형태의 동작 프로그램을 대체할 수 있는 자바 프로그램이다. 즉
서블릿은 자바를 이용한 CGI프로그램이라고 할 수 있다. 그러나 서블릿은 기존의 CGI와는 달리 효율적인 면에서
매우 뛰어나다. 기존의 CGI 프로그램(C, C++, Perl 등)은 클라이언트 요청이 있을때 마다 하나의 프로세스(process)
를 생성해서 CGI 프로그램을 수행한다. 이러한 방법은 클라이언트의 요청이 많을 경우 서버에 많은 부하를 주게 되며
성능이 저하된다. 그러나, 서블릿은 클라이언트 요청에 프로세스를 생성하는 것이 아니라 쓰레드를 생성한다.
쓰레드는 프로세스 생성에 비해 서버에 부하를 주지 않아 CGI에 비해 성능면에서 뛰어나다.

서블릿은 서버에서 실행되는 작은 프로그램이다. 이 용어는 웹 페이지와 함께 별도의 파일로 보내지는 작은 프로그램인 자바 애플릿의 맥락에서 만들어진 신조어이다. 자바 애플릿들은 사용자를 위해 간단한 계산업무를 수행하거나 사용자의 반응에 기반하여 이미지를 위치시키는 등과 같은 서비스를 위해 대개 클라이언트에서 실행되도록 만들어진다.

그러나, 사용자의 입력에 따라 데이터베이스와 연계되는 프로그램들은 서버에서 실행될 필요가 있다. 보통, 이러한 것들은 CGI를 이용하여 구현된다. 그러나, 서버에서 실행되는 자바 가상머신을 이용하면, 그러한 프로그램들을 자바 언어로 구현할 수 있다. 서버에 있는 자바 서블릿의 장점은 CGI 응용프로그램보다 더 빠르게 실행될 수 있다는 것이다. 서블릿은 각 사용자의 요청마다 별도의 프로세스가 생기는 대신, 단 하나의 데몬 프로세스 내에서 스레드로 호출되는데, 이는 각 요구에 따른 시스템 오버헤드가 적다는 것을 의미한다.

CGI 응용프로그램의 이름을 지칭하는 URL 대신, 호출되고 있는 자바 서블릿의 결과인 웹 페이지 내의 요청이 URL을 호출하게 되는데, 그 형태는 다음과 같다.

http://www.terms.co.kr:8080/servlet/gotoUrl?http://www.someplace.co.kr

URL 내의 "8080"이라는 포트 번호는 이 요청이 웹 서버 그 자체로 직접 가는 것임을 의미한다.


몇몇 추가적인 모듈들은 자바 서블릿들이 넷스케이프 Enterprise나, 마이크로소프트의 IIS 및 아파치 서버에서 실행될 수 있도록 해준다.


-----------------------------------------------------------
CGI (Common gateWay, interface)  란,

CGI는
웹서버에 있어 사용자의 요구를 응용프로그램에 전달하고 그 결과를 사용자에게 되돌려주기 위한 표준적인 방법이다. 사용자가 하이퍼링크클릭 하거나 웹사이트의 주소를 입력함으로써 웹 페이지를 요청하면, 서버는 요청된 페이지를 보내준다. 그러나, 사용자가 웹페이지의 양식에 내용을 기재하여 보냈을 때, 그것은 보통 응용프로그램에 의해 처리될 필요가 있다. 웹 서버는 으레 그 양식 정보를 조그만 응용프로그램에 전달하는데, 이 프로그램은 데이터를 처리하고 필요에 따라 확인 메시지를 보내주기도 한다. 이렇게 서버와 응용 프로그램간에 데이터를 주고받기 위한 방법이나 규약들을 CGI라고 부른다. 이것은 웹의 HTTP 프로토콜의 일부이다.
 -------------------------------------------------------------------

CGI는 Common Gateway Interface의 약자로 특정한 프로그램 언어를 뜻하는 것이 아니라 웹 서버와 프로그램을 연결 시켜주는 protocol(규약, 약속)을 의미한다. 

CGI는 웹 서버의 일부분으로 서버측에서 수행되는 다른 응용프로그램과 통신할 수 있는 기능을 제공한다.

예를 들어 홈페이지의 게시판을 만들 경우 데이터베이스와 접속이 필요하다.(사용자가 기입한 내용을 FORM으로 전달)


CGI는 C, Java등의 언어로 사용하여 작성하게 되는데 자바 CGI의 성능을 개선한 방법을 sevlet이라고 한다.


서블릿은 자바를 이용해서 작성한 CGI 프로그램이지만, 일반 CGI 프로그램과는 다른 특성들을 가지고 있다

일반 CGI는 특성상 클라이언트의 요청이 있을 때마다 프로세스를 생성하여 CGI를 수행한다.

그러한 프로세스 생성은 클라이언트의 요청이 많아질 경우 과부하를 불러오기 때문에 비효율적이다.

이러한 단점을 보완한 것이 서블릿이다. 서블릿은 클라이언트의 요청이 생길 경우 프로세스를 생성하는 것이 아니라 thread를 생성한다. 또한 각 서블릿은 한 번 메모리에 로드되고 계속적으로 사용된다.

서블릿을 실행시키는 자바 가상 머신은 항상 실행되고 있는 상태이고, 사용자가 많은 사이트의 경우 효과적이다.

'JSP > JSP 정리' 카테고리의 다른 글

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14