웹 애플리케이션 이해하기 - 정의, 기본구조 ( WEB-INF ), 톰캣
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)로서 일종의 환경 설정 파일이다. 웹 애플리케이션에 대한 여러가지 설정을 할 때 사용된다. |
웹 애플리케이션 기본 구조에 HTML 파일과 JSP 파일을 저장하는 디렉터리가 추가된 것을 볼 수 있다. 이처럼 WEB-INF 디렉터리 하위에 여러가지 기능의 디렉터리를 추가하면서 실제 서비스를 제공한다. 필요할 경우 또다시 디렉터리 안에 디렉터리를 생성하여 사용할 수 있다.
구성 요소 | 기능 |
jsp/html | JSP 파일과 HTML 파일이 저장된 곳이다. |
css | 스타일시트 파일이 저장된 곳이다. |
image | 웹 애플리케이션에서 사용되는 이미지가 저장된 곳이다. |
js | 자바스크립트 파일이 저장된 곳이다. |
bin | 애플리케이션에서 사용되는 각종 실행파일이 저장된 곳이다. |
conf | 프레임워크에서 사용하는 각종 설정 파일이 저장된 곳이다. |
src | 자바 소스 파일이 저장된 곳이다. |
다음은 컨테이너에서 웹 애플리케이션을 실행하고, 이클립스에서 웹 애플리케이션 실습 및 서비스 를 다루는 포스팅을 해보자.