'JSP'에 해당되는 글 15건

  1. 2012.08.16 Chpater 1. 웹 프로그래밍 기초.
  2. 2012.08.16 웹 서버란
  3. 2012.08.16 JSP란 무엇인가.
  4. 2012.08.14 스크립트 방식 & 실행 코드 방식
  5. 2012.08.14 서블릿(Servlet)
posted by changhozz 2012. 8. 16. 18:09

웹 어플리케이션 ㅡ> 웹을 기반으로 실행되는 어플리케이션을 의미.

우리는 웹 브라우저에 www.naver.com 과 같은 문장을 주소로 입력함으로써
웹 어플리케이션에 기능을 요청하고, 요청을 받은 웹 어플리케이션은 요청한 기능에 알맞은 결과 화면을
생성해서 웹 브라우저에 전송한다.

<이런식>

웹 브라우저 ㅡ> 웹서버 ㅡ> 어플리케이션 서버 ㅡ> 데이터베이스 ㅡ> 어플리케이션 서버 ㅡ> 웹서버 ㅡ> 웹 브라우저 

 구성 요소

역 할 

주요 제품 

 웹 서버 

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

결국, 웹 브라우저에서 정적인 페이지를 요청했을땐 웹 서버에서 바로 제공을 하는것이고,
프로그램 처리가 필요한 동적인 페이지를 요청했을땐 웹 어플리케이션 서버로 넘기는 것이다. 

아파치 

어플리케이션 서버 

게시글 목록, 로그인 처리와 같은 기능을 실행(처리)하고, 그 결과를 응답으로 웹 서버에 전달한다.

톰캣, 웹로직, JBoss 등. 

데이터베이스 

웹 어플리케이션이 필요로 하는 데이터를 저장한다. 예를 들어, 회원 정보, 게시판 글 데이터 등을 저장한다. 

오라클, MySQL, MS-SQL등 

웹 브라우저 

웹 서버에 서비스  실행을 요청하며, 웹 서버의 처리 결과를 사용자에게 보여준다. 

인터넷 익스플로러, 파이어폭스
크롬 

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

cf. ) 톰캣 ㅡ> JSP페이지를 웹 서버에 요청을 하면 이 페이지를 해석하고 실행하는 역할을 하는 것.

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

CGI 방식과 어플리케이션 서버 방식

웹 브라우저 ㅡ> 웹서버 ㅡ>웹 어플리케이션 ㅡ> 웹서버 ㅡ>웹브라우저
                 (요청)         (처리)                                   (응답)

이처럼 웹 어플리케이션이 실행되는 과정은 '요청 - 처리 - 응답'의 3단계 과정으로 정리할 수 있는데,
웹 서버가 웹 어플리케이션 프로그램을 실행하는 방식에 따라서 CGI 방식과 웹 어플리케이션 동작 방식을 구분 할 수 있다.

자 다시 말하면, CGI 방식과 어플리케이션 서버 방식 간의 차이점은 웹 서버가 직접 프로그램을 호출하는지의
여부에 있다.

CGI방식은 웹 서버에서 바로 펄 프로그램이라든지 C프로그램을 직접 실행하고,

┖> 요청 ㅡ> 웹 서버 ㅡ> 프로그램

어플리케이션 서버 방식은 웹 서버가 직접 프로그램을 실행하지 않고, 어플리케이션 서버를 통하여
프로그램들을 실행시킨다. 

┖>요청 ㅡ> 웹 서버 ㅡ> 어플리케이션 서버 ㅡ> 프로그램

접속자가 많은 서비스의 경우 CGI 방식보다 어플리케이션 서버 방식의 성능(처리량)이 더 좋게 나타난다.
예를들어, 동시에 5개의 웹 브라우저가 동일한 프로그램을 요청했다고 해보자.
CGI 방식의 경우 요청 개수만큼 프로그램이 메모리에 로딩된다. 같은 프로그램을 실행하는 경우라 하더라도
요청이 발새할 때마다 매번 메모리에 프로그램이 로딩되기 때문에, 동시에 접속하는 웹 브라우저의 요청 개수가
많아질수록 이에 비례해서 프로그램을 실행하기 위해 필요한 메모리도 증가하게된다.
따라서 속도가 느려져서 전체적으로 성능 저하 현상이 발생한다.

반면, 어플리케이션 서버 방식은 동시에 여러 웹 브라우저가 동일한 프로그램을 요청하더라도 한 개에 해당하는 메모리만 사용하기 때문에 CGI방식에 비해 전체적으로 메모리 사용량이 적다.

----------------------------------------보충설명---------------------------------------------

CGI 방식 (실행코드방식)

: 웹서버어플리케이션 프로그램을 직접 호출하는 구조.

ㄱ. 사용자가 5명이 웹브라우저에서 KIM프로그램을 요청했다.

ㄴ. 각각의 요청을 받은 웹서버가 각각에 해당되는 프로세스를 만들어 직접 프로그램을 직접호출한다.

ㄷ. 프로세스는 실행중인 프로그램인데, 사용자 마다 프로세스를 만들어준다면 과부하가 걸리며 시스템상 좋지 못하다.

2. 웹 어플리케이션 서버 방식(포털사이트, 스크립트 코드방식)

: 어플리케이션 서버 방식은 웹서버가 직접 어플리케이션프로그램을 처리하는게 아니라, 웹어플리케이션 서버에게 처리를

넘겨주고, 어플리케이션 서버어플리케이션 프로그램을 처리한다. 어플리케이션 서버방식은 여러명의 사용자가 동일한

페이지를 요청하여 같은 어플리케이션프로그램을 처리할때 오직 한개의 프로세스만을 할당하면서, 사용자의요청을 쓰레드 방식으로 처리.

쓰레드란? 프로스세 내에 잇는 명령어 블록, 하나의 프로세스 역할을 수행할 수 있다. 다중 쓰레드가 가능

하기 때문에, 하나의 프로세스에 여러개의 쓰레드를 만들어 사용한다면, CGI와 같은 일을 처리하더라도, 프로세스가 하나

이기에, 상당히 시스템상 효율적이다. 당연히 더 많은 사용자에게 서비스를 제공할 수 있다.

 

----------------------------------------보충설명---------------------------------------------

스크립트 방식과 실행 코드 방식

웹 어플리케이션 프로그래밍은 구현하는 방식에 따라 실행 코드 방식과 스크립트 방식으로 구분할 수 있다.

비교 항목 

실행 코드 방식 

스크립트 방식 

코드 형태  

컴파일 된 실행 프로그램 

컴파일 되지 않은 스크립트 코드 

실행 방식 

컴파일 된 기계어 코드 직접 실행 

스크립트 코드를 해석한 뒤 실행 

코드 변경 

소스 코드를 다시 컴파일 해야 함 

스크립트 코드만 고치면 됨 

종류  

C 기반 CGI 프로그램 

JSP, ASP, net, PHP, Ruby 등 

실행 코드 방식의 경우

웹 브라우저 요청 전송 ㅡ> 웹 서버 요청 받음 ㅡ> 프로그램 실행

스크립트 방식의 경우

웹 브라우저 요청 전송 ㅡ> 웹 서버 요청 받음 ㅡ> 스크립트 코드 번역 ㅡ> 번역된 코드 실행.

 

위에 만 보았을 땐 실행 코드 방식이 더 빠른거 같은데 다음과 같은 이유 때문에 스크립트 코드 방식의 속도가 더 빠르다.

1.스크립트 코드 번역은 최초 요청에 대해서 한 번만 발생하며, 이후의 요청에 대해서는 번역 과정 없이 앞서 번역된 코드를 실행하도록 함으로써 번역 횟수를 최소화 하고 있다.

2. 실행 코드 방식의 경우 일반적으로 CGI 방식이고, 스크립트 코드 방식인 JSP나 ASP는 어플리케이션 서버 방식이기 때문에 전체 처리량에서는 JSP/ASP 기반의  스크립트 코드 방식이 앞선다.

3. 기술의 발달로 스크립트 언어를 번역한 코드가 일반 프로그램과 동일한 수준의 성능을 제공하고 있다.

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

프로토콜(Protocol) -   컴퓨터와 컴퓨터 사이, 또는 한 장치와 다른 장치 사이에서
데이터를 원활히 주고받기 위하여  약속한 여러 가지 규약(規約).
이 규약에는 신호 송신의 순서, 데이터의 표현법, 오류 검출법 따위가 있다.

프로토콜에는 http, ftp 등이 있는데, 웹 브라우저와 웹 서버는 http나 https 프로토콜을 이용하여 통신하게 된다.

가장 대표적인 프로토콜은 TCP/IP 이다.

TCP/IP ㅡ> TCP/IP란 네크워크 전송 프로토콜로 서로 다른 운영체제를 쓰는 컴퓨터 간에도 데이터를
전송할 수 있어 인터넷에서 정보전송을 위한 표준 프로토콜로 쓰이고 있다.
TCP는 전송 데이터를 일정 단위로 나누고 포장하는 것에 대한 규약이고,
IP는 직접 데이터를 주고 받는 것에 대한 규약이다.
인터넷에 물려 있는 모든 컴퓨터는 인터넷 표준 위원회에서 제정한 규약을 따르고 있는데,
인터넷 표준 프로토콜이 TCP/IP이다.
프로토콜이란 쉽게 말해 한 컴퓨터에서 다른 컴퓨터로 데이터를 완전하게 보내기 위한 장치이다.
TCP/IP에서 먼저 IP는 출발과 도착 주소를 가지는 헤더를 참조해 네트워크를 통해 데이터를 목적지에 전달한다. 그러나 이 과정에서 데이터가 잘못 전달되거나 파손될 수도 있고, 보내진 순서대로 데이터를 전송하지
못할 수도 있다. 이러한 단점을 보완하는 것이 TCP이다.
즉 IP가 데이터 패킷을 분실하거나 파손하면 TCP는 문제가 발생했다는 것을 알리고 데이터를 알맞게 재전송하는 임무를 갖는다.
TCP가 에러를 복구하는 과정에서 데이터를 수신하는 호스트에서는 언제나 에러 없이 순서대로 데이터를 전송 받는다.

 

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

쿼리문자열은 주소 뒤에 추가로 붙는 정보로서 '파라미터(parameter)'라고 불리는 데이터를 웹 어플리케이션에
전달할 때 사용된다. 쿼리문자열은 물음표를 이용하여 경로 부분과 구분되며 다음과 같이 1개 이상의 파라미터
이름과 값을 갖는다.

?이름1=값1&이름2=값2&....

이처럼 각각의 파라미터는 '&' 을 이용하여 구분하며, 파라미터의 이름과 값은 등호 부호(=)를 이용하여 구분한다. 
ex) http://www.google.com/search?hl=en&q=jsp&aq=f&oq=

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

서블릿과 JSP

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

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

JSP표준은 서블릿 표준을 기반으로 만들어졌다. 내부적으로 JSP파일이 번역되며 최종 결과물로
서블릿이 만들어진다. 따라서 이 두 표준은 쌍으로 발전하고 있다.

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

JSP란 무엇인가.

JSP, 즉 JavaServer Page는 스크립트 언어이며, 다음과 같은 특징을 갖고 있다.

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

 

JSP는 HTTP 프로토콜을 알마게 처리할 수 있도록 설계 되었다. 예를 들어 , JSP는 웹 브라우저가 전송한 데이터를 읽어오고 생성한 데이터를 웹 브라우저에 전송하는 것처럼 웹 어플리케이션을 개발하는 데 필요한
기능들을 스크립트 차원에서 제공하고 있다. 또한, 사용자의 세션을 쉽게 관리할 수 있도록 자체적으로 세션 기능을 제공하고 있다.(세션 관리는 사용자의 로그인/로그아웃을 구현하는 데 필수적인 요소인데, JSP가 제공하는 세션 기능을 사용하면 쉽게 로그인/로그아웃 기능을 구현할 수 있다.)

 

JSP는 주로 웹 브라우저의 요청에 따라 알맞은 HTML 결과 화면을 생성하기 위해 사용된다.
하지만, HTML 뿐만 아니라 XML 문서, PDF 문서 등 다양한 문서를 생성하는 데에도 JSP를 사용할 수 있다.
최근에는 사이트의 정보를 XML 문서로 전송해 주는 서비스를 제공하는 곳이 늘언고 있는 추세인데,
JSP를 사용해서 쉽게 XML 문서를 생성할 수 있기 때문에 이러한 추세를 쉽게 반영할 수 있다.

 

서블릿과 JSP 그리고 JSTL은 웹 요청을 처리하고 결과를 생성하는 데 사용되는 웹 영역의 기술이다.

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

웹 컨테이너는 이름 그대로 웹 어플리케이션을 실행할 수 있는 컨테이너이다.
자바에서 웹 어플리케이션은 JSP와 서블렛으로 구현되므로 자바에서의 웹 컨테이너는
JSP + 서블릿 으로 구성된다고 볼 수 있다.

웹 컨테이너는 JSP와 서블릿을 실행시켜 주는 컨테이너로 톰캣, 제티, ClassFish 등이 있다.
(웹 컨테이너의 한 종류인 갑다 톰캣이)

 

JSP를 사용하는 이유

1.자바 언어를 기바느로 하고 있기 때문에 플랫폼에 상관없이 사용할 수 있다.
2.대규모 어플리케이션을 구현할 때 사용되는 스프링이나 스트럿츠와 같은 프레임워크와 완벽하게
연동되며, 금융권에서 많이 사용되는 EJB 기술과도 완벽하게 연동된다.

 

 

 

 

 

 

 

 

 

 

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

JSP 수업.  (0) 2012.09.25
웹 어플리케이션  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
posted by changhozz 2012. 8. 16. 13:51

우선 일반적으로 서버란 일반 네트워크에서 개인용 컴퓨터들을 서로 연결해주고
관리를 할 수 있도록 구축해놓은 컴퓨터 시스템을 말한다.(네트워크 망?)

따라서 웹서버란 인터넷이라는 네트워크에서 개인 사용자들이 업체의 컴퓨터에 접속하여
홈페이지 방문 혹은 기타 서비스를 제공받을 수 있도록 인터넷 네트워크에 구축해 놓은
컴퓨터 시스템이다.

즉 웹브라우저(클라이언트)로부터 웹 문서를 요청받아 브라우저가 원하는 웹 문서를
전송하는게 웹 서버이다.

여기서 웹 브라우저란 웹을 사용하기 위해서 필요한 소프트웨어로,
웹 브라우저에 URL 주소를 입력하면 명시된 주소의 컴퓨터에 있는 웹 문서를 요청하는 것이다.
이 컴퓨터가 웹 서버 인 것이다.

 

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

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
서블릿(Servlet)  (0) 2012.08.14
posted by changhozz 2012. 8. 16. 01:47

JSP란 무엇인가.
우선 JSP를 설명하기 위해선 Servlet을 알아야 하고,
Servlet을 알기위해선 CGI를 알아야 겠다는 생각이 들었다.
먼저 CGI는 Commmon Gateway Interface의 약자로 특정한 프로그램 언어를 뜻하는 것이 아니라
웹 서버와 프로그램을 연결 시켜주는 protocol(규약, 약속)을 의미하며,
웹 서버의 일부분으로 서버측에서 수행되는 다른 응용프로그램과 통신할 수 있는 기능을 제공한다.
또한 CGI는 C, Java 등의 언어로 사용하여 작성하게 되는데, 자바 CGI의 성능을 개선한 방법을 servlet이라고 한다.
그렇다면 servlet이란 무엇일까?
servlet은 자바를 이용해서 작성한 CGI 프로그램으로, 일반 CGI 프로그램과는 다른 특성들을 가지고 있다.
일반 CGI는 특성상 클라이언트의 요청이 있을 때마다 프로세스를 생성하여 CGI를 수행한다.
그러한 프로세스 생성은 클라이언트의 요청이 많아질 경우 과부하를 불러오기 때문에 비효율적이다.
이러한 단점을 보완한 것이 sevlet이다. sevlet은 클라이언트의 요청이 생길 경우 프로세스를 생성한 것이
아니라 thread를 생성한다. 또한 각 sevlet은 한 번 메모리에 로드되고 계속적으로 사용된다.
servlet을 실행시키는 JVM은 항상 실행되고 있는 상태이고, 사용자가 많은 사이트의 경우 효과적이다.
그러나 servlet 또한 단점이 있다.servlet을 만들기 위해서는 자바 코드를 작성하고,
코드를 컴파일 해서 클래스 파일을 만들어야 한다. 즉, servlet은 실행 코드 방식에 속한다.
따라서 servlet을 이용하여 웹 어플리케이션을 개발할 경우 화면에 출력되는 데이터를 조금만 바꾸고 싶어도
코드를 수정하고 컴파일 하는 작업을 반복해 주어야 한다.
때문에 , Sun은 servlet 단점을 보완하기 위해 스크립트 방식의 표준인 JSP를 만든 것이다.
따라서 JSP는 코드를 수정하면 바로 내역이 반영된다는 뛰어난 효율성을 갖고 있기 때문에,
웹 어플리케이션을 개발하는데 사용되는 주요 기술로 자리 잡기 시작한 것이다.


Tomcat과 Apache의 차이점

Apache와 Tomcat은 모두 Apache 소프트웨어 재단에서 개발한
오픈 소스 프로그램으로써,
Apache는 정적인 페이지(html)를
Tomcat은 동적인 페이지(jsp)를 동작시키고자 할때 활용하게 되어있다.
또한 Apache는 웹서비스의 역할만을 할 수가 있고,
Tomcat은 웹서비스와 WAS를 모두 담당할 수 있게 되어 있다.
즉 Apache는 사용자의 요청에 따라 html 정도만 뿌려주는 프리젠테이션 역할을 하고,
Tomcat은 그외의 비즈니스 로직이 필요한 동적인 부분을 담당해서
그것을 html 형태로 해석하여 Apache에게 던져주는 역할을 담당하고 있다.
물론 Apache가 없어도 Tomcat 내에도 웹서비스 데몬이 내장되어 있어서
혼자서도 웹서비스와 WAS 역할 모두를 수행할 수가 있다.
마지막으로 여기서 WAS란 Web Application Server의 약자로
서버와 클라이언트 사이에 처리하는 작업량이 많아지면서
 생기는부하를 해결하기 위해 개발 된 것이다.
즉, 클라이언트에서 작업요청이 들어오면 실질적인 처리는
WAS가 하고 서버는 단지 클라이언트에 결과값만 뿌려주는 역할을 하는 것 이다.

 

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

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
스크립트 방식 & 실행 코드 방식  (0) 2012.08.14
서블릿(Servlet)  (0) 2012.08.14
posted by changhozz 2012. 8. 14. 23:11


비교 항목 

실행 코드 

스크립트 

코드 형태 

컴파일 된 실행 프로그램 

컴파일 되지 않은 스크립트 코드 

실행 방식 

컴파일 된 기계어코드 직접 실행 

스크립트 코드를 해석한 뒤 실행 

코드 변경 

소스 코드를 다시 컴파일 해야함 

 스크립트 코드만 고치면 됨

종류 

C기반 CGI 프로그램 

JSP,ASP,PHP,Ruby등 

실행 코드 방식의 경우 실행 순서
웹 브라우저 요청 전송 -> 웹 서버 요청 받음 -> 프로그램 실행

스크립트 방식의 경우 실행 순서
웹 브라우저 요청 전송 -> 웹 서버 요청 받음 -> 스크립트 코드 번역 -> 번역된 코드 실행


JSP(Java Server Page)는 스크립트 언어이며 다음과 같은 특징을 갖고있음.

-html,xml 등 클라이언트가 요청한 문서를 생성하는데 주로 사용된다.
-http와 같은 프로토콜에 따라 클라이언트의 요청을 처리하고 응답한다.
-표현 언어, 표현식, 스크립트릿 등 다양한 스크립트 요소와 액션 태그 등을 제공함으로써
보다 쉽게 웹 어플리케이션을 프로그래밍함.

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

웹 어플리케이션  (0) 2012.08.16
Chpater 1. 웹 프로그래밍 기초.  (0) 2012.08.16
웹 서버란  (0) 2012.08.16
JSP란 무엇인가.  (0) 2012.08.16
서블릿(Servlet)  (0) 2012.08.14
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