4장 웹 애플리케이션 이해하기
1. 웹 애플리케이션
- 정의 : 기존의 정적 웹 애플리케이션 기능을 그대로 사용하면서 서블릿, JSP, 자바 클래스들을 추가하여 사용자에게 동적인 서비스를 제공하는 프로그램을 의미함.
(정적 프로그래밍은 통상적으로 Static으로 표현하며 말 그대로 이미지나 css 혹은 javascript 파일 등의 컨텐츠를 그대로 전달해주는 것이라고 보면 된다. 따라서 웹 페이지가 변경되거나 수정되지 않는 한 언제나 고정된 웹 페이지만 볼 수 있음)
(웹 애플리케이션과 웹사이트는 다른 개념임. 웹사이트는 정적인 컨텐츠를 제공하는 웹 페이지나 문서를 의미함. 일반적으로 사용자는 해당 웹 페이지를 방문하여 정보를 열람하거나 검색 등의 기능을 이용할 수 있음. 예를 들어, 뉴스 사이트나 쇼핑몰 등이 웹사이트의 대표적인 예시임)
-웹 애플리케이션 기본 구조 : 톰캣같은 컨테이너에서 실행되는 웹 애플리케이션은 일정한 디렉토리 구조를 갖추어야 함. (웹 애플리케이션 이름 - WEB-INF - classes, lib, web.xml)
-웹 애플리케이션 이름 : 루트 디렉터리로 JSP, HTML 파일이 저장됨.
-WEB-INF : 웹 애플리케이션에 관한 정보가 저장되는 곳임.
-classes : 서블릿과 다른 일반 클래스들이 위치하는 곳임.
-lib : 여러 가지 라이브러리 압축 파일(jar 파일)이 저장되는 곳임. DB 연동 드라이버나 프레임워크 기능 관련 jar 파일이 저장됨.
-web.xml : 배치 지시자로서 일종의 환경 설정 파일임. 웹 애플리케이션에 대한 여러 가지 설정을 할 때 사용됨.
2. 컨테이너에서 웹 애플리케이션 실행하기
- 웹 애플리케이션은 일반 PC에서 실행되는 자바 애플리케이션과 달리 단독으로 실행할 수 없음. -> 톰캣과 같은 웹 컨테이너에 등록부터 해야함.
- 등록은 두 가지 방법으로, 톰캣 설치 경로의 루트 디렉터리에서 webapps에 웹 애플리케이션 이름을 저장하거나 server.xml에 직접 웹 애플리케이션을 등록해야함.
(전자의 방식은 아예 웹 애플리케이션을 완성했을 때의 경우이고, 후자의 방식은 개발 도중에 확인을 위한 용임)
(server.xml은 톰캣 설치 루트 디렉터리의 conf 폴더안에 있음)
- 웹 브라우저에서 웹 애플리케이션을 요청하는 방법 : http://IP주소:포트번호/컨텍스트(웹애플리케이션)이름/요청파일이름
- 이후 실행은 톰캣의 루트 디렉터리의 bin 폴더에서 Tomcat9.exe 누르면 됨.
3. 컨테이너에서 웹 애플리케이션 실행하기
- 컨텍스트 : 톰캣의 server.xml에 등록하는 웹 애플리케이션을 컨텍스트라 부름. 즉, 톰캣 입장에서 인식하는 한 개의 웹 애플리케이션임.
- 컨텍스트의 특징 : 웹 애플리케이션 당 하나의 컨텍스트가 등록됨. / 웹 애플리케이션 이름과 같을 수도 있고 다를 수도 있음. / 컨텍스트 이름은 중복되면 안 됨. / 명사형으로 지정함. / 대소문자 구분함.
- 톰캣은 모든 설정 정보를 XML로 저장한 후 실행 시 정보를 읽어와 설정대로 실행함. 따라서 우리가 만든 웹 애플리케이션도 미리 <Context> 태그를 이용해서 server.xml에 등록해 두어야 톰캣이 설정한 대로 웹 애플리케이션을 실행함.
- <Context> 태그 구성요소 :
path-웹 애플리케이션의 컨텍스트 이름임. 웹 브라우저에서 실제 웹 애플리케이션을 요청하는 이름임.
docBase-컨텍스트에 대한 실제 웹 애플리케이션이 위치한 경로임.
reloadable-실행 중 소스 코드가 수정될 경우 바로 갱할지를 설정함. false이면 톰캣을 다시 실행해야 반영됨.
- server.xml에 <Context> 태그 등록 양식 :
<Context path ="/컨텍스트 이름"
docBase="실제 웹 애플리케이션의 WEB-INF가 존재하는 디렉터리 경로"
reloadable="true or false" />
- 톰캣 컨테이너에서의 웹 애플리케이션 동작 과정 :
(1)웹 브라우저에서 컨텍스트 이름으로 요청
(2)요청을 받은 톰켓 컨테이너는 요청한 컨텍스트 이름이 server.xml에 있는지 확인
(톰켓 컨테이너가 웹 서버의 역할을 맡음)
(3)해당 컨텍스트 이름이 있으면 컨텍스트 이름에 대한 실제 웹 애플리케이션이 있는 경로로 가서 요청한 main.html을 웹 브라우저로 전송
(4)웹 브라우저는 전송된 main.html을 브라우저에 표시
4. 이클립스에서 웹 애플리케이션 실습하기
- 이클립스에서는 한 개의 프로젝트가 한 개의 웹 애플리케이션임.
- New -> Dynamic Web Project 순으로 하여 프로젝트 생성함.
(이때 web.xml 자동으로 생성하도록 체크해야함)
- src -> main -> webapp에 웹 애플리케이션에 필요한 디렉터리 존재함. 즉 이 폴더가 웹 애플리케이션 이름과 같은 폴더임. 따라서 이 폴더안에 main.html 생성해야함.
- 이후 실행할 때는 소스코드 밑에 servers에서 사용할 서버를 연결 후 초록색 실행 버튼 누르면 됨.
5. 웹 애플리케이션 서비스하기
- 배치(Deploy) : 개발이 완료된 웹 애플리케이션을 실제 사용자들에게 서비스하기 위한 작업을 의미함.
- 톰캣에서 서비스하려면 이클립스에서 File -> Export -> Web -> WAR file -> 프로젝트 선택, 톰캣의 webapps로 목적지 설정하면 webapps에 war파일이 생성되는데 tomcat9.exe를 실행하면 war 파일의 압축이 풀리면서 2번의 전자 방식대로 실행이 됨.