티스토리 뷰
web.xml 배포기술파일은 톰캣같은 서블릿 컨테이너에서 웹 어플리케이션이 어떻게 배포되어야 하는 지를 기술합니다.
이 파일은 톰캣 상에 배포하는 모든 어플리케이션에 필요합니다. 이 파일은 새로운 톰캣 웹사이트의 ROOT 어플리케이션이나, 서블릿 예제, 또는 jsp 예제, 다운로드 받는 모든 웹 어플리케이션 및 war 파일 안에서 쉽게 찾을 수 있습니다.
이 파일의 위치는 언제나 똑같습니다 : application root /WEB-INF/web.xml
이 파일은 최소한 하나의 XML 기술어(descriptor)와 시작과 끝을 나타내는 <web-app> 태그를 필요로 합니다.
아래 톰캣 6.0 버전에 맞는 최소의 XSD 스타일을 갖는 예제가 있습니다. 다른 버전의 예제 ( 7.0, 5.5, 5.0 등 ) 및 XSD 와 DTD의 비교는 web.xml DTD and XSD 를 보십시요.
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
</web-app>
<web-app> 태그 안에, 다수의 다른 요소들이 포함될 수 있습니다. 이들에 대한 자세한 내용은 아래에 있습니다.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<!-- ========================================================== -->
<!-- 일반 -->
<!-- ========================================================== -->
<!-- 어플리케이션의 이름 -->
<display-name>Example App</display-name>
<description>An example application which is used to play with some of the features of Tomcat</description>
<!-- 클러스터링 준비가 된 어플리케이션 -->
<distributable />
<!-- 타임아웃 120분 -->
<session-config>
<session-timeout>120</session-timeout>
</session-config>
<!-- ========================================================== -->
<!-- 커스텀 태그 라이브러리 -->
<!-- ========================================================== -->
<!-- JSP 2.0 이후에는 태그라이브러리 선언은 더이상 필요가 없습니다. Removing taglib from web.xml 를 보세요 -->
<!-- 예전버전에서 <tablib> 태그는 <jsp-config> 태그의 자식태그가 될 필요가 없었으나 톰캣 7 부터는 자식태그로 넣어야 합니다. -->
<!-- web.xml 당 단 하나의 <jsp-config> 를 가질 수 있습니다. -->
<jsp-config>
<taglib>
<taglib-uri>mytags</taglib-uri>
<taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>
-->
<!-- ========================================================== -->
<!-- JSP 설정 -->
<!-- ========================================================== -->
<!--
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<include-prelude>/WEB-INF/jspf/prelude1.jspf</include-prelude>
<include-coda>/WEB-INF/jspf/coda1.jspf</include-coda>
</jsp-property-group>
</jsp-config>
-->
<!-- ========================================================== -->
<!-- 컨텍스트 파라미터 -->
<!-- ========================================================== -->
<context-param>
<description>Enable debugging for the application</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<description>The email address of the administrator, used to send error reports.</description>
<param-name>webmaster</param-name>
<param-value>address@somedomain.com</param-value>
</context-param>
<!-- ========================================================== -->
<!-- JNDI 환경변수 -->
<!-- ========================================================== -->
<env-entry>
<env-entry-name>webmasterName</env-entry-name>
<env-entry-value>Ms. W. Master</env-entry-value>
<env-entry-type>java.lang.String</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>cms/defaultUserSettings/recordsPerPage</env-entry-name>
<env-entry-value>30</env-entry-value>
<env-entry-type>java.lang.Integer</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>cms/enableXMLExport</env-entry-name>
<env-entry-value>false</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<env-entry>
<env-entry-name>cms/enableEmailNotifications</env-entry-name>
<env-entry-value>true</env-entry-value>
<env-entry-type>java.lang.Boolean</env-entry-type>
</env-entry>
<!-- ========================================================== -->
<!-- 서블릿 -->
<!-- ========================================================== -->
<!-- 이름, 클래스, 설명과 URL /servlet/SimpleServlet 에 대한 매핑을 갖는 간단한 서블릿-->
<servlet>
<servlet-name>Simple</servlet-name>
<servlet-class>SimpleServlet</servlet-class>
<description>This is a simple Hello World servlet</description>
</servlet>
<servlet-mapping>
<servlet-name>Simple</servlet-name>
<url-pattern>/servlet/SimpleServlet</url-pattern>
</servlet-mapping>
<!-- *.cms URL들에 해당하는 CMS 서블릿 -->
<servlet>
<!-- 식별 -->
<servlet-name>cms</servlet-name>
<servlet-class>com.metawerx.servlets.ContentManagementSystem</servlet-class>
<description>This servlet handles requests for the CMS (it is a controller in an MVC architecture)</description>
<!-- 이 서블릿은 두 개의 파라미터를 가지고 있습니다. -->
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<!-- 어플리케이션이 시작되면 이 서블릿을 로딩합니다. (서블릿의 init() 메쏘드를 호출합니다. ) -->
<load-on-startup>5</load-on-startup>
<!-- <run-at>0:00, 6:00, 12:00, 18:00</run-at> 이 태그는 Resin 에서만 정상 작동합니다. -->
</servlet>
<!-- URL들을 cms 서블릿으로 매핑 ( *.확장자 매핑을 기술 ) -->
<servlet-mapping>
<!-- .cms 로 끝나는 모든 URL에 대해 cms 서블릿이 호출됩니다. -->
<servlet-name>cms</servlet-name>
<url-pattern>*.cms</url-pattern>
</servlet-mapping>
<!-- /content/* 과 /admin/RewriterStatistics URL 들에 응답하는 Rewriter 서블릿 -->
<!-- /content/* URL 들에 응답하는 서블릿 정의 -->
<servlet>
<servlet-name>rewriter</servlet-name>
<servlet-class>com.metawerx.servlets.URLRewriter</servlet-class>
</servlet>
<!-- URL들을 rewriter 서블릿으로 매핑 ( /path/* 와 특정 URL을 매핑 ) -->
<servlet-mapping>
<!-- /content/ 로 시작하는 모든 URL에 대해 rewriter 서블릿이 호출됩니다. -->
<servlet-name>rewriter</servlet-name>
<url-pattern>/content/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<!--통계를 리턴하기 위해 /admin/RewriterStatistics 처럼 rewriter 서블릿은 직접 호출될 수도 있습니다. -->
<servlet-name>rewriter</servlet-name>
<url-pattern>/admin/RewriterStatistics</url-pattern>
</servlet-mapping>
<!-- JSP 파일을 사용하기 위해 /shop/item/* URL에 매핑된 PathJSP 서블릿 -->
<!-- /shop/item/* URL 에 응답하기 위한 JSP 파일 정의 -->
<servlet>
<servlet-name>pathjsp</servlet-name>
<jsp-file>pathfinder.jsp</jsp-file>
</servlet>
<!-- URL 들을 pathjsp 서블릿으로 매핑 ( /long/path/* URL 매핑을 기술 ) -->
<servlet-mapping>
<!-- /shop/item/ 으로 시작하는 모든 URL들은 pathjsp 서블릿이 호출됩니다. -->
<servlet-name>pathjsp</servlet-name>
<url-pattern>/shop/item/*</url-pattern>
</servlet-mapping>
<!-- ========================================================== -->
<!-- 필터-->
<!-- ========================================================== -->
<!-- 각각의 request 에 캐릭터 셋을 설정하는 필터예제 ( 톰캣의 servlets-examples 로부터 ) -->
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>EUC_JP</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 각 페이지의 최 상위에서 HTTP request 덤프를 뜨기 위한 필터 예제 ( 톰캣의 servlets-examples 로부터 ) -->
<filter>
<filter-name>Request Dumper Filter</filter-name>
<filter-class>filters.RequestDumperFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Request Dumper Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- ========================================================== -->
<!-- 리스너 -->
<!-- ========================================================== -->
<!-- 어플리케이션 이벤트 리스너 예제 정의 -->
<listener>
<listener-class>com.metawerx.listener.ContextListener</listener-class>
</listener>
<listener>
<listener-class>com.metawerx.listener.SessionListener</listener-class>
</listener>
<!-- ========================================================== -->
<!-- 보안 -->
<!-- ========================================================== -->
<!-- 역할 정의 -->
<security-role>
<role-name>admin</role-name>
</security-role>
<security-role>
<role-name>cms_editors</role-name>
</security-role>
<!-- /private/* 에 대한 액세스 제약 조건 정의 -->
<security-constraint>
<display-name>Security constraint for the /private folder</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/private/*</url-pattern>
<!-- 기술한 HTTP request 에 대해서만 액세스가 금지됨 -->
<!-- 액세스를 금지하려면 아래 주석을 제거하면 됨 -->
<!--
<http-method>DELETE</http-method>
<http-method>GET</http-method>
<http-method>POST</http-method>
<http-method>PUT</http-method>
-->
</web-resource-collection>
<auth-constraint>
<!-- 오로지 admin과 cms_editors 만 여기를 액세스할 수 있습니다. -->
<role-name>admin</role-name>
<role-name>cms_editors</role-name>
</auth-constraint>
</security-constraint>
<!-- FORM에 기반한 인증 -->
<!-- 아래 주석을 제거하면 기본 HTTP 인증을 사용합니다. ->
<!--
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
-->
<!-- 이 어플리케이션은 기본 인증을 사용합니다. -->
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Editor Login</realm-name>
</login-config>
<!-- 어플리케이션의 모든 페이제에 대해서 SSL 제약을 걸어주는 정의 -->
<security-constraint>
<web-resource-collection>
<web-resource-name>Entire Application</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<!-- ========================================================== -->
<!-- 에러 핸들러 -->
<!-- ========================================================== -->
<!-- 404 에 대한 에러 핸들러 -->
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<!-- java.lang.Throwable 에 대한 에러 핸들러-->
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/errorThrowable.jsp</location>
</error-page>
<!-- ========================================================== -->
<!-- 그 밖의 MIME 타입 -->
<!-- ========================================================== -->
<!-- 아래처럼 XML mime-mapping 을 하면, octet/stream으로 보내는 대신, 적절한 스프레드 시트를 오픈합니다. -->
<mime-mapping>
<extension>xls</extension>
<mime-type>application/vnd.ms-excel</mime-type>
</mime-mapping>
<!-- ========================================================== -->
<!-- 로케일 -->
<!-- ========================================================== -->
<!-- 로케일 인코딩 -->
<locale-encoding-mapping-list>
<locale-encoding-mapping>
<locale>ja</locale>
<encoding>Shift_JIS</encoding>
</locale-encoding-mapping>
</locale-encoding-mapping-list>
<!-- ========================================================== -->
<!-- 웰컴 파일 -->
<!-- ========================================================== -->
<!-- 패쓰에 파일 네임이 없을 경우 어떤 파일을 보여줄 지 순서대로 정의합니다. -->
<!-- 예를들면 사용자가 http://yoursite.com/ 나 http://yoursite.com/somefolder 을 호출하면 -->
<!-- 기본값은 서버전역의 web.xml 파일에 씌여진 index.jsp 나 index.htm 같은 것들이 제공됩니다. -->
<!-- 이 태그를 사용하면 기본값을 오버라이딩 하므로 이곳에 추가해야함을 잊지 마십시요. -->
<welcome-file-list>
<!-- index.swf나 splash.jsp가 있으면 사용하고, 그렇지 않으면 일반적인 기본값을 찾습니다. -->
<welcome-file>index.swf</welcome-file>
<welcome-file>splash.jsp</welcome-file>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
원본 : http://wiki.metawerx.net/wiki/Web.xml
각각의 태그에 대한 설명은 원본 사이트의 해당 설명 페이지로 이동합니다.
일부 페이지는 한 번 정리해보면 좋을 거 같은데....
언제 정리해볼 지는.. ㄷㄷㄷㄷ
- Total
- Today
- Yesterday
- 캠핑
- Java
- 아마존
- LG
- 자바
- G3
- 부모님
- 스프링
- K리그
- 여행
- 세부
- 텐트
- Spring
- 펜탁스
- 캠핑장
- 사이판
- 톰캣
- 강원도
- web.xml
- k-3
- 스프링부트
- 전북
- PIC
- MySQL
- 리조트
- spring tutorial
- 에닝요
- 카메라
- SqlSessionfactory
- mybatis
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |