JSP/Servlet | GAE 애플리케이션 생성 | 프로젝트의 구성 이해

프로젝트를 만들면 윈도우의 왼쪽에 있는 수직 공간에 “MyGaeApp"라는 폴더가 생성된다. 이 폴더의 왼쪽 ▽ 마크를 클릭하여 확장 보면 그 안에 여러가지 파일이나 폴더가 생성되어 있는 것을 확인 할 수 있다. 이 “MyGaeApp” 폴더가 생성한 프로젝트이다. 이 폴더에 있는 파일 등이 이번 만들 GAE 용 Web 응용 프로그램에 필요한 모든 기능이다.

이 왼쪽 길쭉한 지역은 “Project Explorer"라는 뷰이다. “뷰"라는 것은, Eclipse의 화면에 일부 배치되는 부품과 같다. Eclipse의 화면을 보면 몇 가지 사각형 영역의 조합으로 화면이 구성되어 있는지 알 수 있다. 이 하나 하나의 영역이 “뷰"이다. Eclipse는 개발의 내용이나 상황 등에 따라 필요한 뷰를 화면에 배치하여 작업을 진행하게 되어있는 것이다. 기본적으로 일반적인 서버 사이드 Java 개발에 필요한 뷰를 사용할 수 있도록 배치되어 있는 것이다.

왼쪽에 있는 Project Explorer라는 뷰는 프로젝트 내의 파일이나 라이브러리 등의 내용을 표시하고 관리하는 것이다. 여기에서 파일이나 폴더를 정리하고 두 번 클릭하여 파일을 열고 편집할 수 있다.

그럼 우선 이 Project Explorer에서 “MyGaeApp"폴더를 열고 안에 있는 항목을 살펴 보자. 다음과 같은 것이 있어야 한다.

MyGaeApp

  • src 폴더 : Java 소스 코드 파일을 배치하는 곳이다. 이를 확장하면 “com.devkuma.mygaeapp"라는 폴더가 나타나고, 그것을 더 확장하면 “MyGaeAppServlet.java"라는 Java 소스 코드 파일이 있을 것이다. 이는 기본적으로 자동 생성된 샘플 코드이다. 지금은 사용하지 않지만, “Java 클래스를 만들 때 여기에 소스 코드를 배치한다"는 것만은 기억하자.

  • App Engine SDK : 이것은 프로젝트에서 사용하는 GAE SDK의 라이브러리이다. GAE에는 Google 서비스를 이용하기 위해 독자적으로 제공하는 클래스가 많이 있다. 그것들을 사용할 수 있도록 준비된 라이브러리이다. 이것 자체를 무언가 조작하여 이용하는 일은 없다. GAE 프로젝트라면 자동으로 포함되므로 것으로 따로 만지지 않는다.

  • JRE System Library : 이것은 Java 시스템 라이브러리이다. Java의 기본이 되는 라이브러리이며 이것이 준비되어 있지 않으면 Java의 주요 기능은 사용할 수 없게 된다. Java 기반 프로젝트에 자동으로 포함되므로 이도 따로 만지지 않는다.

  • war 폴더 : 이것이 실제로 서버에 전개된 폴더이다. HTML과 스타일 시트, 이미지, 스크립트 등 Web에서 사용하는 파일들은 이 폴더에 넣어 둔다.

프로젝트에 우선 사용하는 것은 “war"폴더이다. 여기에 HTML 파일 등을 배치하고 서버에 접속하는 것이다. 이어서 Java 프로그램을 작성하게 되면 “src"폴더를 이용한다. 다른 두 라이브러리는 정말 아무것도 조작하지 않는다.

war 폴더

실제로 Web 어플리케이션으로 서버에 설치되는 것은 “war"폴더이다. 여기에는 기본적으로 다양한 폴더와 파일이 생성되어 있다. 이것들의 역할에 대해서 정리해 보겠다.

  • index.html : 기본적으로 샘플 파일로 생성되는 HTML 파일이다. Web 어플리케이션의 주소로 접속하면 이 파일이 가장 먼저 표시된다. 이 파일의 내용을 수정을 하여 첫 페이지를 작성할 수 있다.

  • favicon.ico : 응용 프로그램 아이콘 파일이다. 기본적으로 GAE의 작은 마크가 저장되어 있다. 나름대로 만든 이미지로 교체하여도 괜찮다.

  • WEB-INF 폴더 : 이는 Web 응용 프로그램 폴더에서 “공개되지 않은 폴더"이다. 이 속에 넣은 파일은 서버에 게시하고 액세스할 수 없다. 여기에 Web 어플리케이션의 중요한 정보가 저장된다.

  • lib 폴더 : WEB-INF에 있는 폴더이다. 이 안에는 Web 응용 프로그램에서 사용하는 다양한 라이브러리 파일들이 저장되어 있다. 기본적으로 GAE 관련 라이브러리가 포함된다. 물론 뭔가 라이브러리를 필요하면 여기에 파일을 추가하여 이용할 수 있다.

  • appengine-web.xml : GAE의 Web 어플리케이션에 관한 모든 설정을 작성한 XML 파일이다. 이 파일은 GAE 특유의 것으로, 다른 일반적인 Java의 Web 응용 프로그램은 없다. 여기에서 여러가지 설정을 할 수 있다.

  • logging.properties : 이 파일은 GAE 로그 설정 정보를 작성한다. 이 파일도 GAE 이외의 일반적인 Web 응용 프로그램은 없다. 이것은 편집하는 일은 거의 없을 거다.

  • web.xml : Web 어플리케이션에 대한 각종 정보를 작성하는 XML 파일이다. 이 파일은 GAE뿐만 아니라 일반적인 Java의 Web 응용 프로그램에서 사용할 수 있다.

대충 정리하면 서버 사이드 Java에 의해 Web 응용 프로그램은 다음과 같이 구성되어 있다.

  • 배포하는 응용 프로그램 폴더에 HTML 파일이 보통으로 배치된다. 이는 일반적인 Web과 동일하다.

  • 그 안에 “WEB-INF"라는 폴더가 있다. 이는 서버 사이드 Java 특성으로, 이 폴더는 외부에서 접근이 되지 않는다

  • WEB-INF 안에는 Web 응용 프로그램의 정보를 작성한 “web.xml"와 라이브러리를 배치하는 “lib"라는 폴더가 있다. (일반적인 Java의 Web 어플리케이션에서는, Java 프로그램인 클래스 파일도 여기에 저장된다)