본문 바로가기

Web Programing/JSP

웹어플리케이션의 이해 (Web Application)


1. Web 서버와 Web 어플리케이션

 

1) Web 서버

Web 서버란 HTTP프로토콜을 기반으로 하여, Web 클라이언트(브라우져)로 부터의 요청을 서비스 하는 기능을 담당하는 프로그램을 말합니다. (일반적으로 Apache 를 많이 사용함.)

Web 서버의 역할은 html, 이미지(jpg, gif..등), xml 등에 대한 처리를 담당합니다. (CGI 프로그램의 요청도 처리합니다.)

 

2) Web Application 서버

여러 Web 클라이언트(브라우져)의 요구를 Web 서버 혼자 감당하기에는 힘들기 때문에, 구조적으로 Web 서버의 기능을 분리하기 위해 만들어진 것이 Web Application Server(WAS)입니다. (일반적으로 Tomcat, Weblogic, WebShpare 등을 많이 사용합니다.)

 

2. Web 서버와 Web Application 서버의 차이점

Web 서버와 Web Application 서버는 위의 설명처럼 사용의 목적이 다릅니다.

Web 서버는 html, 이미지들의 요청을 처리하는데 빠르고, Web Application 서버는 Servlet이나, JSP의 비지니스 로직을 수행하는데 적합니다. ( 웹컨테이너란 이러한 Servlet아니, JSP를 수행하는 역할을 하는 서버를 말합니다. )

그렇다고 Web Application이 html, 이미지들의 요청을 처리하지 못한다는 얘기는 아닙니다. 다만 처리 속도가 Web 서버에 비해 느리다는 거죠.

이렇게 서로 다른 강점을 합해서 사용하기 위해 Web 서버와 Web Application 서버를 연동하여 서비스하기도 합니다.

 

3. Web Application 구조

반드시 다음 그림과 같은 구조로 유지 되어야 한다. ( 표준임 )

  웹 어플리케이션 ( Web Root )

                    │
                    ├── WEB-INF
                    │            │
                    │            │
                ┌─┴─┐        ├─ classes
             html       jsp       │
                                  │
                                  ├─ lib
                                  │
                                  │
                                  └─ web.xml 

요구되는 형태로 웹 어플리케이션 보관소 생성을 용이하게 하기 위해서, 웹 어플리케이션의 "실행" 파일들(즉, 웹 어플리케이션을 실행할 때 톰캣이 사용하는 파일들)을 WAR 형식에서 요구하는 것과 같은 구성으로 정리하는게 편합니다. 이렇게 하려면, 웹 어플리케이션의 "문서 루트 document root" 디렉토리에 다음 내용으로 구성합니다:


  • *.html, *.jsp, 등. - 웹 어플리케이션에서 클라이언트 브라우저로 전송이 되는 HTML 과 JSP 페이지와 다른 파일들 (예를 들면 자바스크립트, 스타일시트, 이미지 같은). 대규모 어플리케이션에서 이 파일들을 서브디렉토리 체계로 나누어 놓을 수 있습니다. 그러나 규모가 작은 어플리케이션이라면 보통은 하나의 디렉토리에서 전체를 관리하는 것이 보다 단순하고 쉽습니다.


  • /WEB-INF/web.xml - 웹 어플리케이션의 웹 어플리케이션 배치 설명자 Web Application Deployment Descriptor. 서블릿과 웹어플리케이션을 구성하는 다른 컴포넌트들을 설명하고, 각종 초기화 파라메터들과 서버 기능을 활용하기 위한 컨테이너가 관리하는 보안 제한 구역을 지정하는 XML 파일입니다.


  • /WEB-INF/classes/ - 이 디렉토리에는 웹 어플리케이션에서 사용하는 모든 자바 파일(그리고, 관련 자원)이 들어있습니다. 서블릿과 비서블릿 클래스 파일들이며 jar 형태로 묶여있지 않은 것입니다. 패키지가 선언된 클래스라면 /WEB-INF/classes/ 를 기준으로 패키지의 디렉토리를 만들어 구성하면 됩니다. 예를 들어, 클래스명이 com.mycompany.mypackage.MyServlet 라면 파일의 저장경로는 /WEB-INF/classes/com/mycompany/mypackage/MyServlet.class 이 됩니다.


  • /WEB-INF/lib/ - 이 디렉토리에는 웹어플리케이션에서 사용하는 자바 클래스파일을 포함하는 JAR 파일들이 위치합니다. 외부 클래스 라이브러리나 JDBC 드라이버 같은 것들입니다.



톰캣(또는 다른 2.2/2.3 호환 서버)에 어플리케이션을 설치할 때, WEB-INF/classes/ 에 있는 클래스들과 WEB-INF/lib/ 디렉토리에 있는 JAR파일에 있는 모든 클래스들은 같은 웹 어플리케이션에서 사용하는 모든 클래스가 접근가능하게 되어있습니다. 따라서, 만일 이 디렉토리 안에 사용하는 모든 라이브러리 클래스들을 몰아 넣으면 (외부 라이브러리를 사용하는 경우 재배포 권한에 관한 라이센스를 확인하길 바랍니다.), 웹 어플리케이션의 설치가 간단히 끝날 수 있습니다 -- 시스템 Class Path에 대한 조정(또는 서버에 있는 전체 라이브러리의 설치)도 필요 없습니다.