본문 바로가기

Web/기초

[WEB기초] web.xml

Web Application Structure(웹 서비스 기본 설정 구조)

출처 : https://gmlwjd9405.github.io/2018/10/29/web-application-structure.html

 

1. src

  • 개발자가 작성한 Servlet 코드가 저장된다.

2. Libraries

  • Servlet이나 JSP에서 추가로 사용하는 라이브러리 또는 드라이버
  • jar로 압축한 파일

3. Web Content

  • Deploy할 때 Web Content 디렉터리 전체가 .war로 묶어서 보내진다.
  • WEB-INF
    • lib
      • 추가한 모든 라이브러리 또는 드라이버가 이곳에 모두 저장된다.
    • classes
      • 작성한 Java Servlet 파일이 나중에 .class로 이곳에 모두 저장된다.
    • web.xml
      • SUN에서 정해놓은 규칙에 맞게 작성해야 하며 모든 WAS에 대하여 작성 방법이 동일하다.
    • .html 파일들
      • 관련된 HTML 소스를 저장한다.
        • Ex. WebContent > views Directory -> index.html은
          http://localhost/helloLogin/views/index.html와 매핑된다

web.xml 기본설정

개념

  • web application의 설정을 위한 deployment descriptor

역할

  • Deploy할 때 Servlet의 정보를 설정해준다.
  • 브라우저가 Java Servlet에 접근하기 위해서 WAS(Ex. Tomcat)에 필요한 정보를 알려줘야 해당하는 Servlet을 호출할 수 있다.
    • 정보 1) 배포할 Servlet이 무엇인지?
    • 정보 2) 해당 Servlet이 어떤 URL에 매핑되는지

예시

<web-app>

    <!-- 1. aliases 설정 -->
    <servlet>
        <servlet-name>welcome</servlet-name>
        <servlet-class>servlets.WelcomeServlet</servlet-class>
    </servlet>

    <!-- 2. 매핑 -->
    <servlet-mapping>
        <servlet-name>welcome</servlet-name>
        <url-pattern>/welcome</url-pattern>
    </servlet-mapping>

</web-app>

1. aliases 설정

  • 서블릿 이름을 실제 서블릿 클래스에 연결
  • <servlet-name>welcome</servlet-name>과 아래 매핑 설정에서의 servlet-name은 반드시 같아야 한다.
  • <servlet-class>servlets.WelcomeServlet</servlet-class>은 개발자에 의해 작성된 실제 클래스 이름으로 설정해야 한다.
    • Ex. (패키지 이름).(서블릿 클래스 이름)

2. 매핑

  • URL을 서블릿 이름에 연결
  • <url-pattern>/welcome</url-parttern>은 클라이언트(browser)의 요청 URL에서 앱(프로젝트)이름 뒤에 오는 부분으로, 슬래시('/')로 시작해야 한다.

※ 참고 클라이언트(browser)가 요청하는 URL정보

  • 요청을 보낼 서버의 IP 주소 : Port 번호 / App 이름 / 달라고 요청하는 HTML
    • Ex. http://localhost:8080/FormHandlingServlet/LoginForm.html

 

 

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

  • DispatcherServlet
  • ContextLoaderListener
  • encodingFilter 

DispatcherServlet

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

출처 : https://gmlwjd9405.github.io/2018/10/29/web-application-structure.html

  • 각 기능의 요청별로 DispatcherServlet을 할당한다.
  • 아래와 같은 설정을 각 기능에 맞게 추가한다.
<servlet>
  <servlet-name>salesServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- contextLoader가 해당 위치의 설정 파일을 읽어, 해당 파일을 dispatcher servlet으로 만든다. -->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/salesServlet-servlet.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

<!-- /sales로 시작하는 url 요청을 받아 salesServlet에서 처리한다. -->
<servlet-mapping>
  <servlet-name>salesServlet</servlet-name>
  <url-pattern>/sales</url-pattern>
</servlet-mapping>

 

 

 

 

 

 

 

 

출처

gmlwjd9405.github.io/2018/10/29/web-application-structure.html

 

[Web] web.xml 설정 내용, 역할 및 간단한 예시 이해하기 - Heee's Development Blog

Step by step goes a long way.

gmlwjd9405.github.io