WAR (文件格式)

在软件工程中，WAR文件（Web应用程序归档，）是一种JAR文件，其中包含用来分发的JSP、Java Servlet、Java类、XML文件、标签库、静态网页（HTML和相关文件），以及构成Web应用程序的其他资源。

内容和结构 
一个WAR文件可能会以与JAR文件相同的方式进行数字签名，以便他人确定哪些源代码来自哪一个JAR文件。

而WAR文件也有其特殊的文件和目录。如果Web应用程序使用的servlet，则Servlet容器会使用web.xml文件，以确定某个URL请求将被路由到哪个Servlet上。web.xml还用于定义Servlet中可以引用的上下文变量，以及部署器所需配置的环境依赖关系。例如，一个依赖于邮件会话、用于发送电子邮件的程序，而Servlet容器负责提供这项服务。这就需要在web.xml进行一些配置。

优缺点 
WAR文件有如下优点：
 易于部署和测试
 已部署的应用程序，其版本很容易辨别
 所有的Java EE容器都支持.WAR文件

使用WAR文件进行Web部署的一个缺点是，即便是细微的修改，也不能在程序运行时进行。任何修改都需要重新生成和部署整个WAR文件。

示例 
下面的示例web.xml文件，演示了一个Servlet是怎样被声明和被关联的。

  <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE web-app
     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"
     "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
 
 <web-app>
     <servlet>
         <servlet-name>HelloServlet</servlet-name>
         <servlet-class>mypackage.HelloServlet</servlet-class>
     </servlet>
 
     <servlet-mapping>
         <servlet-name>HelloServlet</servlet-name>
         <url-pattern>/HelloServlet</url-pattern>
     </servlet-mapping>
 
     <resource-ref>
         <description>
             資源引用到一個可被用於發送電子郵件的javax.mail.Session的實例工廠。
         </description>
         <res-ref-name>mail/Session</res-ref-name>
         <res-type>javax.mail.Session</res-type>
         <res-auth>Container</res-auth>
     </resource-ref>
 </web-app>

参见 
相关的文件格式有：
 
 JAR
 EXE格式

参考文献

外部链接 
Oracle Java EE 7指南：打包Web文档
Oracle Java EE 6指南：Web模块 
Oracle Java EE 5指南：Web模块 
太阳计算机系统：Servlet 2.5 WAR文件的XML Schema 
太阳计算机系统：Servlet 2.4 WAR文件的XML Schema 
JSR 154：Java Servlet 2.4规范 

归档格式
Java企业平台