서블릿은 서버가 요청을 받고 자동으로 실행하는 웹 애플리케이션 파일입니다. 서버가 알아서 찾아서 생성하고 실행해야 하므로 서버가 알고 있는 위치에 있어야 합니다.

또한 서버가 자동으로 호출해야 하므로 작성하기 위해 지켜야 하는 규칙이 있습니다.

 

우선 우리가 웹상에서 서비스를 하기 위해서 필요한 여러 파일들 즉, 이미지 파일, html 파일, css 파일, javascript 파일들을 서버가 알고 있는 위치에 폴더를 만들고 하나로 모아야 합니다. 이렇게 웹에서 서비스할 파일을 모아놓은 폴더를 "Web Application 폴더" 혹은 "Context"라고 합니다. 각각의 파일을 저장해야 하는 위치가 정해져 있고 표준화된 구조를 갖고 있으므로 이 또한 규칙에 맞게 저장되어야 서버가 찾을 수 있습니다.

표준화된 구조는 다음과 같습니다.

 

 

만약 이클립스를 개발 툴로 사용하고 있다면 다음과 같이 작업해야 합니다. 우선 Context를 작성합니다. Servlet을 연습하는 동안 작성해야 하는 프로젝트는 "Dynamic Web Project"입니다.

 

 

[project name]에 context 명을 입력하고 [Dynamic web module_version]은 지원되는 서블릿 spec입니다. 이는 어떤 버전의 서버를 설치하냐에 따라 다르며 선택한 서버의 제조사 홈페이지에 가서 확인합니다. 우리가 설치한 버전은 Tomcat9.0이며

http://tomcat.apache.org/whichversion.html에서 확인할 수 있습니다.

 

[Next] 버튼을 누른 후 실제 이클립스에서 자바 코드를 저장할 위치를 확인합니다.

 

[Context root]는 우리가 작성한 Web Application 폴더명입니다. [Content directory]는 이클립스에서 웹 관련 어플리케이션이 저장되는 위치입니다.

[Generate web.xml deployment descriptor]의 체크박스를 선택하여 web.xml이 추가되도록 해야 합니다. 물론 실제 작업할 때는 annotation을 이용하여 등록할 것이지만 그래도 뭐가 등록되는지 알고 있으려면 web.xml을 추가해서 설정을 해보아야 이해할 수 있습니다.

 

[Finish] 버튼을 누르면 다음과 같은 폴더 구조를 Context가 추가됩니다.

 

그런데 만들어진 폴더 구조를 보면 표준화된 폴더 구조가 아닌 것을 확인할 수 있습니다. 실제 이클립스에 추가된 폴더는 개발자가 편하게 작업하기 위해 제공되는 구조입니다.

자바 파일은 모두 [Java Resources] - [src]에 작성하고 웹 관련된 페이지나 라이브러리는 [WebContent]에 작성하면 됩니다.

그럼 이클립스에서 작업하면 이 표준화된 폴더 구조에 대한 약속을 지키지 않아도 되는 것일까요? 직접 개발하는 곳에서는 개발자의 편의를 제공하고 있지만 실제 서버가 인식하는 폴더는 표준화된 폴더 구조로 만들어져 있습니다. 우선 간단한 파일을 작성하도록 하겠습니다. srctest 패키지를 작성하고 Test.java를 작성합니다.

 

웹 관련 요소 즉, 웹 페이지와 관련된 파일도 있어야 확인할 수 있으므로 [WebContent] 폴더에 test.html을 작성합니다.

 

단축 메뉴를 선택하고 [Run As]-[Run on Server]를 선택하여 서버 위에서 실행합니다.

 

[Run on Server] 대화상자에서 [Always use this server when running this project]를 체크하고 [Next] 버튼을 누릅니다. 오른쪽 부분의 [Configured] 리스트에 "serverWeb" 이 추가되어 있습니다. 이것은 서버가 인식하는 위치로 폴더가 배포되었다는 의미입니다.

 

[Servers] View를 보면 "serverWeb"이 서버에 배포된 것을 확인할 수 있습니다.

 

실제 폴더가 어떤 위치인지 확인해 보겠습니다.

C:\사용자가 작업하는 workspace위치

\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps의 폴더를 선택하면 "serverWeb"폴더가 있죠?

 

내부를 확인해보면 표준화 구조에 맞게 html 문서는 Context 바로 밑에, .class 파일은 WEB-INF/classes 폴더 밑에 저장되어 있는 것을 알 수 있습니다.

 

 

' > servlet&JSP' 카테고리의 다른 글

external web browser 설정  (0) 2019.07.31
서블릿 작성 규칙  (0) 2019.07.26
프로젝트에 서블릿 JSP 라이브러리 등록하기  (0) 2019.07.22
서블릿의 개요  (0) 2019.07.17

+ Recent posts