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 |