Java web 기본구조

2 분 소요

1. Java web 기본구조

  • Java Resouces
    • src : 개발자가 작성한 Servlet 코드가 저장된다.
    • Libraries
      • Servlet이나 JSP에서 추가로 사용하는 라이브러리.
      • jar로 압축되어 있음
  • WebContent
    • Deploy할 때 WebContent 디렉터리 전체가 .war로 묶어서 보내진다.
    • WEB-INF
      • lib: 추가한 모든 라이브러리 또는 드라이버가 이곳에 모두 저장된다.
      • classes: 작성한 Java Servlet 파일이 나중에 .class로 이곳에 모두 저장된다.
      • web.xml: SUN의 규칙에 맞게 작성해야 하며 모든 WAS에 대한 작성 방법이 동일하다.
      • html 파일들 : 관련된 HTML 소스를 저장한다.

WebContent - views Directory - index.html

(1) WEB-INF 란?

  • WEB-INF WEB INFormation의 약자로 웹 애플리케이션에서 필요한 설정 파일을 가지고 있다. (class 파일, 라이브러리, 기타 리소스 등)

WEB-INF는 중요한 파일들이 노출되지 않도록 만든 폴더, META-INF는 웹 설정과 관련된 파일을 저장하는 폴더

웹 클라이언트(브라우저)에서 Context Root 하위의 정보에 대해 접근할 수 있지만 WEB-INF에는 접근할 수 없다. 웹 클라이언트(브라우저)에서 URL을 통해 jsp 파일을 직접 요청하는 것을 제한하는 구조로 설계되었기 때문에 jsp 파일은 WEB-INF 폴더에 두게 된다.

반면에, 웹 클라이언트가 참조해는 css, img(이미지파일), js(jQuery 등)은 참조할 수 있도록 Context Root의 바로 하위에 static 폴더를 만들어 관리한다. (src/main/webapp/static/css,ims,js,…)

(2) web.xml 기본 설정

역할 : web application을 Deploy할 때 Servlet의 정보를 설정해준다. 브라우저가 Java Servlet에 접근하기 위해서는 WAS(Tomcat과 같은 WAS)에 필요한 정보를 전달하여 해당하는 Servlet을 호출할 수 있다.

필요한 정보 (1) 배포할 Servlet이 무엇인지

필요한 정보 (2) 해당 Servlet이 어떤 URL에 매핑되는지

① aliases 설정

서블릿 이름을 실제 서블릿 클래스에 연결

<servlet-name>Hello</servlet-name>

servlet-name은 반드시 같아야 한다.(아래 매핑과 동일해야됨.)

<servlet-class>servlets.HelloServlet</servlet-class>

사용자에 의해 작성된 실제 클래스 이름으로 설정해야 한다. (예 : 패키지 이름.서블릿 클래스 이름)

② 매핑

<url-pattern>/Hello</url-pattern>

URL을 서블릿 이름에 연결한다. 클라이언트(browser)의 요청 URL에서 Project 이름 뒤에 오는 부분이다. 슬래시(“/”)로 시작한다.

  • (참고) 클라이언트 요청 URL

형식 : 요청 서버의 IP 주소 : Port 번호 / 어플리케이션 이름 / 요청하는 HTML

예시 : localhost:8080/FormHandlingServlet/HelloForm.html

Spring MVC에서의 web.xml 구체적인 설정 내용

DispatcherServlet, ContextLoaderListener, encodingFilter

DispatcherServlet

  • Spring Container를 생성한다. (Spring Container: Controller의 lifecycle 관리)
  • 클라이언트의 요청을 처음으로 받는 클래스 (Spring에서 제공)
  • 클라이언트의 요청을 Handler(Controller)에 보낸다.
  • 그 외에 필요한 것 HadlerMapping : 어떤 url을 받을지 결정 ViewResolver : logical view name — prefix, suffix —> pysical view object

특정 요청에 대한 처리를 할 수 있다.

  • 생략 가능
  • 에 설정한 이름 + -servlet.xml 형식으로 설정 파일 이름을 만들고, web.xml과 같은 위치(/WEB-INF 하위)에 있어야 contextLoader가 해당 파일을 찾아서 읽을 수 있다.
  • 위와 같이 설정하면 init-param으로 dispatcher xml 파일의 이름 설정하지 않아도 자동으로 로드된다.(예 : eatServlet-servlet.xml)

추가 Maven 웹 프로젝트 구조

workspce/[Project Name]
├ src
│   ├ main
│   │   ├─ java
│   │   ├─ resources
│   │   └─ webapp
│   │        ├── static
│   │        └── WEB-INF
│   └ test
│       ├─ java
│       └─ resources
│
├ target 
└ pom.xml

(1) src/main/java : java 파일이 위치하는 경로

(2) src/main/resources : 프로퍼티나 XML 등 리소스 파일이 위치합니다.

(2) src/main/webapp : Web Project 일 경우 WEB-INF등 웹 어플리케이션 리소스를 위치시킵니다. Web application 설정 파일

- static : css, img, js 파일등

- WEB-INF : 웹 어플리케이션 정보 (context.xml, decorators.xml, infrastructure.xml, sitemesh.xml, web.xml 등) 및 jsp 파일을 둔다.

src/test/java : JUnit등의 테스트 파일이 위치하게 됩니다.

src/test/resources : 테스트시에 필요한 resource 파일이 위치하게 됩니다.

/target : 빌드 된 output이 위치하는 디렉터리 classe, 빌드 결과 출력 (.war).

pom.xml : Maven 관련 파일 설정

태그:

카테고리:

업데이트:

댓글남기기