본문 바로가기

자바

웹 애플리케이션

ㅇ쇼핑몰이나 구인 구직 사이트 등은 모두 웹 브라우저를 기반으로 하는 웹 애플리케이션입니다

이런 웹 애플리케이션들은 보통 정해진 형식이 있기에 서비스를 제공할 때도 이 형식에 맞게 제작해서 제공해야 합니다

 

웹 애플리케이션의 정의

웹 애플리케이션이란 말 그대로 기존의 정적인 웹 애플리케이션의 기능을 그대로 사용하면서

앞으로 다룰 서블릿(자바로 만든 CGI 프로그램), JSP, 자바 클래스들을 추가하여 사용자에게 

동적인 서비스를 제공하는 프로그램을 말합니다

웹 컨테이너에서 실행되는 JSP, 서블릿, 자바 클래스등을 사용해 정적 웹 프로그래밍 방식의 단점을 보완하여 서비스를

제공하는 서버 프로그램을 웹 애플리케이션이라고 합니다. 따라서 정적 웹 애플리케이션의 기능인 HTML, 자바스크립트

CSS 등도 웹 애플리케이션에서 그대로 사용할 수 있습니다 이 책에서는 이런 요소들과 연동하는 기능도 다루므로 기본적으로 숙지해 두어야 합니다 물론 학습하면서 JSP나 서블릿이 이런 정적인 요소들과 어떻게 연동하는지는 따로 살펴봅니다

웹 애플리케이션의 기본 구조

웹 애플리케이션이름

ㄴWEB-INF

 ㄴ classes

 ㄴ lib

 ㄴ web.xml

이러한 구조를 갖추지 않고 컨테이너에서 웹 애플리케이션을 실행하면 오류가 발생합니다.

만약 기본 구조 외에 다른 기능이 추가되면 폴더를 추가해서 사용하면 됩니다

 

웹 애플리케이션 구성 요소의 기능

구성요소    기능

webShop - 웹 애플리케이션의 루트 디렉터리, 다른 웹 애플리케이션 이름과 중복을 허용하지 않으며 여기에는

                JSP HTML 파일이 저장됩니다

WEB-INF - 웹 애플리케이션에 관한 정보가 저장되는 곳입니다 이 폴더는 외부에서 접근할 수 없습니다

classes    - 웹 애플리케이션이 수행하는 서블릿과 다른 일반 클래스들이 위치하는 곳입니다

lib          - 웹 애플리케이션에서 사용되는 여러 가지 라이브러리 압축파일이 저장되는 곳입니다 DB 연동 드라이버나 

                프레임워크 기능 관련 jar 파일이 여기에 저장됩니다 lib 폴더의 jar는 클래스 패스가 자동으로 저장됩니다

web.xml  - 배치 지시자로서 일종의 환경 설정 파일입니다 웹 애플리케이션에 대한 여러 가지 설정을 할 때 사용됩니다

추가

jsp/html  - JSP파일과 HTML 파일이 저장된 곳입니다

css         - 스타일시트 파일이 저장된 곳입니다

image    - 웹 애플리케이션에서 사용되는 이미지가 저장된 곳입니다

js          - 자바스크립트 파일이 저장된 곳입니다

bin        - 애플리케이션에서 사용되는 각종 실행파일이 저장된 곳입니다 

conf       - 프레임워크에서 사용되는 각종 실행 파일이 저장된 곳입니다

src         - 자바 소스 파일이 저장된 곳입니다

 

콘텍스트

앞에서 webShop 프로젝트를 미리 webShop 폴더에 위치시켜 놓은 다음 톰캣을 실행했을 때 자동으로 webShop이 

등록되어 실행되는 것을 확인했습니다 이 방법은 우리가 웹 애플리케이션 개발 모두 완료한 후 사용자에게 서비스할 때

편리합니다 

그런데, 실제 개발과정에서는 수시로 애플리케이션을 실행하고 테스트해 봐야 합니다 그때마다 이런 식으로 프로젝트 파일을 통째로 복사해야 한다면 어쩔까요? 심지어 원격으로 설치된 경우는 FTP로 업로드해야 하는데 매우 번거로운 일입니다 실제로 개발할 때는 서 우리가 c드라이브에 webShop을 만든 것처럼 개발자가 정한 위치에 웹 애플리케이션을 생선 한 후 그 위치를 sever.xml에 등록해 놓고 톰캣을 실행하는 식으로 개발해야 합니다 그러면 톰캣이 sever.xml에 입력한 정보에 따라 해당 위치로 이동하여 애플리케이션을 확인한 후 실행합니다 이때 sever.xml에 등록하는 웹 애플리케이션을 콘텍스트라 부릅니다  톰캣 입장에서 인식하는 한 개의 웹 애플리케이션이라고 보시면 됩니다

콘텍스트의 주요 특징은 다음과 같습니다

- 웹 애플리케이션당 하나의 콘텍스트가 등록됩니다

- 웹 애플리케이션 이름과 같을 수도 있고 다를 수도 있습니다

- 콘텍스트 이름은 중복되면 안 됩니다

- 웹 애플리케이션의 의미를 가장 잘 나타낼 수 있는 명시형으로 지정합니다

- 대소문자를 구분합니다

- sever.xml에 등록합니다

 

sever.xml에 콘텍스트를 등록하려면 <Context> 태그를 이용해야 합니다

<Context   path= "/콘텍스트 이름"

                          docBase="실제 웹 애플리케이션의 WEB-INF 디렉터리 위치"

                          reloadable"true 또는 false" />

ex ) <Context   path= "/webMal"

                          docBase="c:\\webShop"

                          reloadable"true " />

-path 웹 애플리케이션의 컨텍스트 이름입니다 웹 애플리케이션 이름과 다르게 할 수도 있으며 웹 브라우저

에서 실제 웹 애플리케이션을 요청하는 이름입니다

-docBase 콘텍스트에 대한 실제 웹 애플리케이션이 위치한 경로입니다 WEB-INF상위 폴더까지의 경로를 나타냅니다

-reloadable 실행 중 소스코드가 수정될 경우 바로 갱신할지를 설정합니다 만약 false로 설정하면 톰캣을 다시 실행해야 축하한 소스코드의 기능이 반영됩니다

 

일반적으로 콘텍스트 이름은 웹 애플리케이션 이름과 동일하게 합니다. 하지만 지금은 실습을 하기위해 

다르게 등록해 보았습니다 실제 웹 애플리케이션은 c:\\webShop 디렉터리에 있지만 여기에서는 /webShop

이 아닌 /webMal이라는 이름으로 컨텍스트 등록하였습니다

sever.xml을 메모장이나 VS Code로 열어 149행쯤에 있는 <Host> 태그 안에 <Context> 태그를 이용해서 등록합니다

 

톰캣 컨테이너에서의 웹 애플리케이션 동작 과정

이번에는 앞의 두 가지 방법으로 톰캣 컨테이너에 웹 애플리케이션을 등록한 후 브라우저에서 요청할 경우 톰캣이 브라우저에 서비스하는 과정을 알아보겠습니다

실제 웹 브라우저에서 콘텍스트 이름으로 요청할 경우 웹 애플리케이션이 동작하는 과정은 다음과 같습니다

1. 웹 브라우저에서 콘텍스트 이름으로 요청합니다

2. 요청을 받은 톰캣 컨테이너는 요청한 콘테스트 이름이 sever.xml에 있는지 확인합니다

3. 해당 콘텍스트 이름이 있으면 컨텍스트 이름에 대한 실제 웹 애플리케이션이 있는 경로(C:\webShop)로 가서 요청한

main.html을 클라이언트 브라우저에 나타냅니다

4. 웹 브라우저는 전송된 main.html을 브라우저에 나타냅니다

 

콘텍스트 이름으로 요청할경우 이 컨텍스트 이름이 미리 server.xml에 등록되어 있어야 합니다

만약 등록되어 있지 않은 컨텍스트 이름으로 요청한 경우 404 오류가 발생합니다

 

이클립스에서 웹 프로젝트 생성

이클립스에서는 한 개의 프로젝트가 한 개의 웹 애플리케이션입니다. 그리고 프로젝트 이름이 바로 웹 애플리케이션 이름입니다.

'자바' 카테고리의 다른 글

서블릿 기초  (0) 2020.02.11
서블릿 이해하기  (0) 2020.01.31
웹 프로그래밍의 기본  (0) 2020.01.28
자료형(Data Type)  (0) 2019.08.13
변수  (0) 2019.08.12