Site Search :
Standard Enterprise XML Methodology Pattern Setting Tunning Other
Article Contributors
GuestBook
Javapattern Maven
XSourceGen Dev
JetSpeed Test
JLook Image
jLook Family Site


Web Tier Java Techonology
 
웹티어쪽의 자바기술에 어떠한 것들이 있으며, 그 특징에 대하여 간략하게 살펴보도록 한다. ( 2003/03/04 ) 273
Written by ienvyou - 최지웅
1 of 1
 

Java Servlet

Java Servlets은 business system을 접근하고, 웹개발자에 웹서버의 기능을 확장하여 
사용할 수 있도록 하는 일관된 메커니즘을 제공할 수 있는 java 기술이다. 이러한 servlets은 
다양한 웹 애플리케이션의 개발이 가능하도록 만들어 주며, 여러분들이 알고 있는 애플릿을 
생각하면 무리가 없으리라 본다. 다른 점이 있다면 서블릿은 서버측(server-side)에서 작동하는 
애플릿이라 생각하면 된다.
또한 서블릿은 웹 애플리케이션을 개발하는 데 있어서 기존의 CGI(Common Gateway Interface)가 
가지고 있는 performance의 한계점을 뛰어넘으며, 플랫폼 독립적이며 컴포넌트 지향적인 자바 
애플리케이션을 구축할 수 있다는 장점을 지니고 있다. 기존의 CGI의 문제점은 클라이언트의 
요청시 여러 개의 프로세스가 자신들의 영역을 차지하며 많은 자원을 소모하기 때문에 
성능문제를 일으킬 수 있었지만 자바는 멀티스레드라는 강점을 이용하여 그러한 성능문제점을
해결해내고 있다. 현재 third-party Servlet Container들은 Apache Web Server, Microsoft IIS,
iPlanet Server등에서 사용이 될 수 있다.
그러면 간단하게 서블릿의 작동방식에 대하여 알아보도록 하자.



위의 그림에서 보는 것처럼 웹이라 하면 request와 response가 대부분을 차지한다고 보면 된다.
Servlet은 HttpServlet을 상속받음으로서 처리를 할 수 있고, servlet에 대한 요청이 들어오게 되면 
웹서버는 이를 인식하여 servlet container로 request를 이동시킨 후 lifecycle에 의한 처리를 수행한 후
결과값을 웹서버를 통해 클라이언트로 넘겨주는 방식을 취하고 있다.
서블릿은 위처럼 동작하며, 다양한 dynamic한 웹 애플리케이션을 작성할 수 있다는 장점을 가지고
있다. 하지만 자바 코드안에 우리가 보여줄 html의 내용을 넣어야 하기 때문에 유지보수의 단점이 
대두되게 된다. 그러한 코드와 화면 로직의 분리를 위하여 JSP가 등장하게 된다

Java Server Pages

JSP(Java Server Pages, 이하 JSP)는 플랫폼 독립적인 웹 기반의 애플리케이션을 빠르게 구축할 수
있도록 만든 자바 기술의 한 종류이다. 서블릿의 단점은 코드에 화면로직이 들어가 있다는 
것이었다. Designer의 페이지 레이아웃 형태의 변경을 용이하게 하며 해당 컨텐츠로부터 사용자 
인터페이스를 분리시킬 수 있다는 장점을 가지고 있다. Response로 보여지는 페이지에는 또한 
어떠한 타입의 HTML이나 XML도 반환되어 질 수 있다는 것 또한 특징이다. 애플리케이션 로직은 
서버상의 자원들을 사용하며, JSP태그를 사용하여 웹페이지의 설계와 로직의 분리로 인하여 
컴포넌트의 재사용성이 높아질 수 있다.
기본적인 JSP는 Servlet Container를 이용하여 동작을 하게 되며, script자체의 jsp를 인식하는 것이
아닌 JSP에서 Servlet코드로의 변환과정을 거친 후 메모리에 로딩되어 처리되는 방식을 취하고 있다.
결국 서블릿이 가지는 장점을 모두 가짐과 동시에 presentation logic의 분리라는 강력한 기능을 
제공하는 자바기술이라고 할 수 있다. 그러한 구조를 아래의 그림에서 살펴보도록 하자.



위의 그림에서 보듯이 jsp를 호출했을 경우 웹서버는 이 요청을 받아 컨테이너에게 요청이 
들어왔음을 알린 후 request를 컨테이너에게 넘기게 되는데 이 때 컨테이너는 해당 jsp의
컴파일된 서블릿 클래스가 존재하는지를 확인하여 있다면 이미 로딩된 클래스를 이용하여 
요청을 처리하게 된다. 만약 컴파일이 안된 jsp였다면 서블릿으로 컴파일 한 후 실행을
시키게 된다. 이러한 JSP를 이용하여 애플리케이션을 만들게 된다면 해당 JSP에 대한 최초 
요청시 시간이 걸리는 것을 볼 수가 있는데 이유는 JSP를 파싱하여 servlet으로 바꾸는 일을 
컨테이너가 하기 때문이다.

JSP Beans

Java에서의 Beans는 여러 가지 의미를 내포할 수 있다. 그들은 EJB(Entierprise Java Beans)와 
standard부분의 JavaBeans 그리고 JSP에서 사용하는 Beans이다. 각 개념에서의 사용 형태는 
틀리지만 일반적으로 Beans라는 용어는 재사용가능한 컴포넌트들이라 정의를 내리면 
이해하는데 있어서 무리가 없을 것으로 보인다.
JSP에서 이러한 Beans를 사용하는 이유는 대략 다음과 같이 정의할 수 있다. 첫째로 실제 
JSP코드를 개발함에 있어 scriptlet안에 우리가 사용하는 java코드를 삽입할 수 있는데 HTML과 
자바코드의 내용이 커질수록 명확히 분리해낼 수 없기 때문에 request등에 의해 들어오는 
데이터들을 추출하고 그것을 entity class로 정의를 함으로서 객체사용의 효율성을 높이는 것이 
주요한 이유 중의 하나이다. 두번째로 어떤 상태정보값을 계속적으로 유지해야 할 필요성이 
있을 수가 있는데 대표적인 예로 쇼핑몰을 구축할 경우 shopping cart의 경우이다.
이 때 데이터들을 쿠키나 세션에 어떠한 기본 API로 집어넣는다 하더라도 우리가 실제로 
필요한 데이터에 대한 정보를 조작하기에는 부족한 면이 없지 않다. JSP에서 처리할 수 없는 
user-define형태의 class를 선언하고 핸들링함으로서 그러한 문제점을 해결할 수 있는 방법을 
제시한다. 
세번째는 클래스의 재사용성이 그 이유가 있다. JSP의 자바코드의 경우 해당 
JSP(컨테이너에 의해 컴파일된 후)에서만 유효할 뿐이지 다른 페이지에서 사용한다면 
결국 copy-paste의 형태로서만 사용이 가능하게 될 것이다. 자바의 객체지향개념중의
재사용성의 측면을 정확하게 살리고자 한다면 이러한 Beans의 사용이 적극 유도되어야 할 것이다.

 	Custom Tag Library

사용자 정의 JSP언어 속성이라고 말할 수 있는 Custom Tag Library는 어떠한 JSP에 의해서도 
재사용되어질 수 기능을 모듈식으로 정의하고 선언한 것이다. 위에서 설명한 Beans의 경우
단순히 entity클래스 또는 로직을 분리를 시킬 수는 있다하여도 결정적인 JSP Content를 
조작할 수 없다라는 단점을 가지고 있다. 이로 인해 JSP페이지는 스크립팅 요소가 굉장히 
강해지게 되며 JSP페이지를 불분명하게 만드는 요인이 될 수 있다. 여기서 JSP커스텀 태그가 
위력을 발휘를 하게 되는데 디자이너와 개발자간의 역할분담을 완전히 이루낼 수 있도록
도와준다. 또한 라이브러리 사용자와 라이브러리 개발자 사이의 분리로서 애플리케이션에 
대한 생산성 향상을 높일 수 있다는 특징을 가지고 있다. 
또한 이식성이 굉장히 높은 특징을 가지고 있는데 이는 라이브러리가 한번 개발이 되고 나면 
어떤 JSP page에서라도 scripting에 독립적으로 사용이 될 수 있다

Written by Carouser : 2002-09-24

 
1
References
 
http://java.sun.com/j2ee
http://java.sun.com/products/jsp/
http://java.sun.com/products/servlet
Copyright ⓒ 2003 www.javapattern.info & www.jlook.com, an jLOOK co.,LTD