웹 애플리케이션, 톰캣/웹 애플리케이션 이해하기, 기본구조

웹 애플리케이션 이해하기 - 정의, 기본구조 ( WEB-INF ), 톰캣

샤리미 2024. 4. 25. 00:56
728x90
반응형

1. 웹 애플리케이션

 

쇼핑몰이나 구인, 구직 사이트 등은 모두 웹 브라우저를 기반으로 하는 웹 애플리케이션이다. 이런 웹 애플리케이션들은 보통 정해진 형식이 있기 때문에 서비스를 제공할 때도 이 형식에 맞게 제작해서 제공해야 한다. 

 

이번에는 일반적으로 사용하는 웹 애플리케이션의 구조와 이를 이루는 요소들에 대해 알아보자. 또한 실제로 웹 브라우저에서 요청이 왔을 때 각 기능들이 어떻게 동작하는 지 그 과정도 살펴보자. 

 

1.1 웹 애플리케이션의 정의

 

웹 애플리케이션이란 말 그대로 기존의 정적인 웹 애플리케이션의 기능을 그대로 사용하면서 이번에 다룰 서블릿(Servlet, 자바로 만든 CGI 프로그램), JSP, 자바 클래스들을  추가하여 사용자에게 동적인 서비스를 제공하는 프로그램을 말한다. 

 

웹 컨테이너에서 실행되는 JSP, 서블릿, 자바 클래스들을 사용해 정적 웹 프로그래밍 방식의 단점을 보완하여 서비스를 제공하는 서버 프로그램을 웹 애플리케이션이라고 한다.  따라서 정적 웹 애플리케이션의 기능인 HTML, 자바스크립트, CSS 등도 웹 애플리케이션에서 그대로 사용할 수 있다. 

 

정적인 웹 애플리케이션 기능 + 동적인 서비스

 

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

 

이번에는 실제 톰캣과 같은 웹 컨테이너에서 실행하는 웹 애플리케이션의 기본 디렉터리(폴더) 구조에 대해 살펴봅니다. 컨테이너에서 실행되는 모든 웹 애플리케이션은 아래처럼 애플리케이션의 이름으로 이루어진 루트 디렉터리와 하위 디렉터리 구조를 기본 구조로 가진다. 

 

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

 

이러한 구조를 갖추지 않고 컨테이너에서 웹 애플리케이션을 실행하면 오류가 발생한다. 만약 기본 구조 외에 다른 기능이 추가되면 디렉터리(폴더)를 추가해서 사용하면 된다. 

 

현재는 이클립스 같은 통합 개발 환경(Integrated Development Environment, IDE) 에서 웹 애플리케이션을 개발하지만 초기 웹 애플리케이션 개발 당시에는 실제로 위와 같은 구조를 개발자가 직접 만들어서 사용했다. 웹 애플리케이션을 제작하려면 그 구조도 알아두는 것이 좋다.

 

이번에는 실제로 파일 탐색기를 이용하여 웹 애플리케이션 기본 구조를 직접 만들어 본다. 

 

1. 탐색기에서 C 드라이브에 webShop 폴더를 생성한다. 

 

2. webShop 폴더 안에 WEB-INF 폴더를 생성한다. 

3. WEB-INF 폴더에 classes 와 lib 폴더를 각각 생성한다. 

 

4. WEB-INF 폴더를 선택하고 텍스트 문서를 선택해 텍스트 파일을 생성하고 이름을 web.xml 로 변경해준다. 

 

 

5. VS Code로 web.xml 파일을 열고 다음 코드를 작성한다. 

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
</web-app>

 

 

지금 만든 웹 애플리케이션의 이름은 webShop 이고, 하위 디렉터리 에는 WEB-INF 가있다. WEB-INF 폴더 하위에는 classes 와 lib 폴더가 있고, web.xml 파일이 있다. 이것이 이 웹 애플리케이션을 이루는 요소들이다. 각 구성 요소들의 자세한 기능을 알아보자.

 

구성요소 기능
webShop 웹 애플리케이션의 루트 디렉터리, 다른 웹 애플리케이션 이름과 중복을 허용하지 않으며, 여기에는 JSP HTML 파일이 저장된다. 
WEB-INF 웹 애플리케이션에 관한 정보가 저장되는 곳이다. 이 디렉터리는 외부에서 접근할 수 없다. 
classes 웹 애플리케이션이 수행하는 서블릿과 다른 일반 클래스들이 위치하는 곳이다. 
lib 웹 애플리케이션에서 사용되는 여러가지 라이브러리 압축 파일(jar 파일)이 저장되는 곳이다 . DB 연동 드라이버나 프레임워크 기능 관련 jar 파일이 여기에 저장된다. lib 디렉터리의 jar 클래스패스가 자동으로 설정된다. 
web.xml 배치 지시자(deployment descriptor)로서 일종의 환경 설정 파일이다. 웹 애플리케이션에 대한 여러가지 설정을 할 때 사용된다. 

 

 

실제 서비스 중인 웹 애플리케이션의 구조 (루트 디렉터리에 JSP 나 HTML 파일을 저장하는 디렉터리가 있다. )

 

웹 애플리케이션 기본 구조에 HTML 파일과 JSP 파일을 저장하는 디렉터리가 추가된 것을 볼 수 있다. 이처럼 WEB-INF 디렉터리 하위에 여러가지 기능의 디렉터리를 추가하면서 실제 서비스를 제공한다. 필요할 경우 또다시 디렉터리 안에 디렉터리를 생성하여 사용할 수 있다. 

구성 요소 기능
jsp/html JSP 파일과 HTML 파일이 저장된 곳이다. 
css 스타일시트 파일이 저장된 곳이다. 
image  웹 애플리케이션에서 사용되는 이미지가 저장된 곳이다. 
js 자바스크립트 파일이 저장된 곳이다.
bin 애플리케이션에서 사용되는 각종 실행파일이 저장된 곳이다. 
conf 프레임워크에서 사용하는 각종 설정 파일이 저장된 곳이다. 
src 자바 소스 파일이 저장된 곳이다. 

 

다음은 컨테이너에서 웹 애플리케이션을 실행하고, 이클립스에서 웹 애플리케이션 실습 및 서비스 를 다루는 포스팅을 해보자. 

728x90
반응형