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
.
application
com.codegym.App 값 사용widgetset
com.codegym.WidgetSet 값 사용ui
com.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 템플릿에 의해 명확하게 암시됩니다: /*
.
다음 강의에서 서블릿 및 필터에 대해 자세히 알아볼 것입니다.
GO TO FULL VERSION