본문 바로가기
자바웹프로그래밍/전자정부프레임워크-번외

web.xml이란 무엇인가?

by 디찌s 2020. 11. 18.
728x90
반응형

*광고 클릭은 제게 큰 힘이됩니다!

Web.xml 

스프링 웹프로그래밍이나 서블릿위주인 웹프로그래밍을 하다보면 web.xml 을 만지는 일들이 있다.

 

그렇다면 도대체 web.xml이 무엇일까?

 

web.xml에서 서블릿 맵핑 되는 방법 ,인증이 필요한 URL 등의 정보를 확인한다.

 

Web.xml은 WebApplication의 Deployment Descriptor(배포 설명자) 로써 XML형식의 파일이다.

 

모든 Web application은 반드시 하나의 web.xml파일을 가져야하고 위치는 WEB-INF폴더 아래에있다.

 

web.xml파일의 설정들은 Web Application 시작시 메모리에 로딩된다.

 

배포 설명자

웹 애플리케이션의 배포 설명자는 애플리케이션의 클래스,리소스,구성 및 웹 서버가 이를 사용해서 웹 요청을 처리하는 방법을 기술하는곳이다.

 

애플리케이션에 대한 요청이 수신되면 배포 설명자(web.xml)를 사용하여 요청의 URL을 해당 요청을 처리해야 하는 코드에 매핑한다.

 

아래의 web.xml에서의 예시에서는 URL경로인 /welcome을 서블릿 클래스 servlets.Servlet에 매핑한다.

 

예시 web.xml

<web-app>

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

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

</web-app>

Web.xml 에 작성되는 내용

 

1. ServletContext의 초기 변수

 

2. 서블릿 및 jsp에 대한 정의 및 맵핑

 

3. MimeType매핑

 

4. Session의 대한 유효시간

 

5. welcome file list

 

6. 오류 핸들러

<error-page>
        <error-code>500</error-code>
        <location>/errors/servererror.jsp</location>
    </error-page>

 

Spring MVC에서의 web.xml 역할

-DispatcherServlet

-ContextLoaderListener

-encodingFilter

 

 

DispatcherServlet

- Spring 콘테이너를 생성(컨트롤러의 lifecylce관리)

- 클라이언트의 요청을 처음으로 받는 클래스

- 클라이언트의 요청을 가로채서 컨트롤러에 보낸다.

 

예제

<servlet>
  <servlet-name>addServlet</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/addServlet-servlet.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>

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

 

 

728x90
반응형

댓글