web.xml 文件

web.xml 文件提供有关包含 Web 应用程序的 Web 组件的配置和部署信息。

Java™ Servlet 规范定义了web.xml以 XML 模式文档的形式呈现部署描述符文件。 为了向后兼容,任何web.xml写入 Servlet 的文件2.2或之前版本中有效的版本WebSphere® Application Server受到 Web 容器的支持。

如果你使用Rational® Application Developer版本 6 来创建 portlet,您必须删除以下引用std-portlet.tld来自web.xml文件:
<taglib id="PortletTLD">
  <taglib-uri>http://java.sun.com/portlet</taglib-uri>
  <taglib-location>/WEB-INF/tld/std-portlet.tld</taglib-location>
</taglib>

位置

web.xml文件必须位于WEB-INFWeb 应用程序存在的目录层次结构上下文下的目录。

[AIX Solaris HP-UX Linux Windows][z/OS]例如,如果应用程序client.war,然后web.xml文件放置在安装根目录/客户战/WEB-INF目录。

[IBM i]例如,如果应用程序client.war,然后web.xml文件放置在profile_root/installedApps/cellName/client.ear/client.war/WEB-INF目录(在默认安装中),其中版本是基础版本或WebSphere Application Server Network Deployment,取决于您使用的版本。

使用说明

  • 该文件是只读的吗?

  • 该文件是由产品组件更新的吗?

    此文件由组装工具更新。

  • 如果是,什么触发其更新?

    当您将 Web 组件组装到 Web 模块,或者当您修改 Web 组件或 Web 模块的属性时,组装工具会更新 web.xml 文件。

  • 如何及何时使用该文件的内容?

    WebSphere Application Server函数在 Web 应用程序开发的配置和部署阶段使用此文件中的信息。

支持的配置:这web.xml文件并不代表可用于 Web 应用程序的完整配置。 存在其他 Servlet 过滤器以及可以使用程序式配置、注释和 Web 片段进行定义的侦听器。
避免麻烦:将 Web 应用程序元数据标记为完成将阻止注释和 Web 片段配置组件。

样本文件条目

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 
	xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" 
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
	<display-name>Servlet 3.0 application</display-name>
	<filter>
    <filter-name>ServletMappedDoFilter_Filter</filter-name>
    <filter-class>tests.Filter.DoFilter_Filter</filter-class>
    <init-param>
      <param-name>attribute</param-name>
      <param-value>tests.Filter.DoFilter_Filter.SERVLET_MAPPED</param-value>
    </init-param>
  </filter>
	<filter-mapping>
		<filter-name>ServletMappedDoFilter_Filter</filter-name>
		<url-pattern>/DoFilterTest</url-pattern>
		<dispatcher>REQUEST</dispatcher>
	</filter-mapping>
	<filter-mapping>
		<filter-name>ServletMappedDoFilter_Filter</filter-name>
		<url-pattern>/IncludedServlet</url-pattern>
		<dispatcher>INCLUDE</dispatcher>
	</filter-mapping>
	<filter-mapping>
		<filter-name>ServletMappedDoFilter_Filter</filter-name>
		<url-pattern>ForwardedServlet</url-pattern>
		<dispatcher>FORWARD</dispatcher>
	</filter-mapping>
	<listener>
		<listener-class>tests.ContextListener</listener-class>
	</listener>
	<listener>
		<listener-class>tests.ServletRequestListener.RequestListener</listener-class>
	</listener>
	<servlet>
		<servlet-name>welcome</servlet-name>
		<servlet-class>WelcomeServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>ServletErrorPage</servlet-name>
		<servlet-class>tests.Error.ServletErrorPage</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>IncludedServlet</servlet-name>
		<servlet-class>tests.Filter.IncludedServlet</servlet-class>
	</servlet>
	<servlet>
		<servlet-name>ForwardedServlet</servlet-name>
		<servlet-class>tests.Filter.ForwardedServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>welcome</servlet-name>
		<url-pattern>/hello.welcome</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>ServletErrorPage</servlet-name>
		<url-pattern>/ServletErrorPage</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>IncludedServlet</servlet-name>
		<url-pattern>/IncludedServlet</url-pattern>
	</servlet-mapping>
	<servlet-mapping>
		<servlet-name>ForwardedServlet</servlet-name>
		<url-pattern>/ForwardedServlet</url-pattern>
	</servlet-mapping>
	<welcome-file-list>
		<welcome-file>hello.welcome</welcome-file>
	</welcome-file-list>
	<error-page>
		<exception-type>java.lang.ArrayIndexOutOfBoundsException</exception-type>
		<location>/ServletErrorPage</location>
	</error-page>
  <error-page>
	  <error-code>404</error-code>
	  <location>/error404.html</location>
  </error-page>
</web-app>
最佳实践:对于每个<error-page>声明,选择<exception-type><error-code>,但不能同时满足两者。 该<location>标签是必需的。