web.xml 구조

사용 가능

7.1 web.xml의 일반 스키마

web.xml 파일은 애플리케이션 구성 정보를 저장합니다. 필수 부분은 아니지만 웹 응용 프로그램을 구성하는 데 매우 널리 사용됩니다.

이 파일은 WEB-INF 폴더 에 있어야 합니다 . Tomcat이 시작되면 내용을 읽고 포함된 구성을 사용합니다. 파일에 오류가 있으면 Tomcat도 오류를 표시합니다.

예 web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">

  <servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloServlet</servlet-class>
   </servlet>

  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/welcome</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
  </welcome-file-list>

</web-app>

"HelloWorld"서블릿 이름 과 서블릿 클래스 의 매핑은 여기에서 녹색으로 작성됩니다"HelloServlet" . 서블릿 이름 과 URL 청크 의 매핑은 파란색으로 표시됩니다"HelloWorld""http://localhost/welcome" . 따라서 여기서는 /welcome 경로에 접근할 때 servlet 을 호출해야 한다고 말합니다 HelloServlet.class.

빨간색은 요청 시 제공해야 하는 파일을 나타냅니다 http://localhost/. 소위 환영 페이지입니다 . 사용자가 단순히 웹 애플리케이션의 루트에 해당하는 이름을 브라우저에 입력하면 index.html.

7.2 서블릿, 서블릿 매핑

하나의 서블릿은 다른 URL에서 요청을 처리할 수 있으므로 web-xml에서는 서블릿과 URL에 대한 매핑이 별도로 작성됩니다. 먼저 서블릿을 설명하고 각각 고유한 문자열 이름을 지정한 다음 각 서블릿이 어떤 URL에 매핑되는지 지정합니다.

예 web.xml:

<web-app>

  <servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>com.codegym.RemotingServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>restapi</servlet-name>
    <servlet-class>com.codegym.RestApiServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>restapi</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>

</web-app>

이 예에서는 두 개의 서블릿이 선언되고 각각 다른 URL 템플릿에 매핑됩니다. 서블릿은 RemotingServlet로 이동하는 모든 요청을 처리합니다/remoting/* . 서블릿은 RestApiServlet로 이동하는 모든 요청을 처리합니다/api/* . 서블릿에는 로드 시 시작 매개변수인 로드 순서도 있습니다.

7.3 서블릿 옵션

web.xml의 도움으로 매개변수는 초기화 중에 서블릿에 전달될 수 있으며 인터페이스를 통해 사용할 수 있습니다 ServletConfig. 전체 웹 애플리케이션에 대한 매개변수를 설정할 수도 있으며 ServletContext.

예 web.xml:

<web-app>
  <context-param>
     <description>Server production mode</description>
     <param-name>productionMode</param-name>
     <param-value>false</param-value>
  </context-param>

  <context-param>
     <param-name>appPropertiesConfig</param-name>
     <param-value>
        classpath:local-app.properties
        classpath:web-app.properties
     </param-value>
  </context-param>

  <servlet>
     <servlet-name>mainservlet</servlet-name>
     <servlet-class>com.codegym.ApplicationServlet</servlet-class>
     <init-param>
        <param-name>application</param-name>
        <param-value>com.codegym.App</param-value>
     </init-param>
     <init-param>
        <param-name>widgetset</param-name>
        <param-value>com.codegym.WidgetSet</param-value>
     </init-param>
     <init-param>
        <param-name>ui</param-name>
        <param-value>com.codegym.AppUI</param-value>
     </init-param>
  </servlet>
</web-app>

녹색으로 강조 표시된 코드는 에 대한 매개변수를 설정한 곳입니다ServletContext . 두 가지가 있습니다.

  • productionMode거짓 값으로
  • appPropertiesConfig두 문자열의 배열:
    • classpath:local-app.properties
    • classpath:web-app.properties

서블릿의 매개변수는 파란색으로 표시되며ApplicationServlet 다음을 통해 사용할 수 있습니다 ServletConfig.

  • applicationcom.codegym.App 값 사용
  • widgetsetcom.codegym.WidgetSet 값 사용
  • uicom.codegym.AppUI 값 사용

7.4 필터, 필터 매핑

웹 애플리케이션에는 특별한 utility servlets - filters. 통화 리디렉션, 인증 확인 등 다양한 서비스 작업을 수행합니다.

예 web.xml:

<web-app>

  <servlet>
      <servlet-name>remoting</servlet-name>
      <servlet-class>RemotingServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
      <servlet-name>remoting </servlet-name>
      <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>

  <filter>
      <filter-name>total_filter</filter-name>
      <filter-class>com.javrush.TotalFilter</filter-class>
  </filter>

  <filter-mapping>
      <filter-name>total_filter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>

</web-app>

요청이 서블릿에 도달하기 전에 RemotingServlet필터에 의해 처리됩니다 TotalFiler. 이 필터는 웹 애플리케이션으로 이동하는 모든 요청을 가로채도록 구성됩니다 . 이것은 매핑된 URL 템플릿에 의해 명확하게 암시됩니다: /*.

다음 강의에서 서블릿 및 필터에 대해 자세히 알아볼 것입니다.

코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다