zoukankan      html  css  js  c++  java
  • WAR文件

    3.2 WAR文件

    如果一个Web应用程序的目录和文件非常多,那么将这个Web应用程序部署到另一台机器上,就不是很方便了,我们可以将Web应用程序打包成Web归档(WAR)文件,这个过程和把Java类文件打包成JAR文件的过程类似。利用WAR文件,可以把Servlet类文件和相关的资源集中在一起进行发布。在这个过程中,Web应用程序就不是按照目录层次结构来进行部署了,而是把WAR文件作为部署单元来使用。

    一个WAR文件就是一个Web应用程序,建立WAR文件,就是把整个Web应用程序(不包括Web应用程序层次结构的根目录)压缩起来,指定一个.war扩展名。下面我们将第2章的Web应用程序打包成WAR文件,然后发布。WAR文件的创建与JAR文件的创建使用相同的命令。

    打开命令提示符,进入%CATALINA_HOME%\webapps\ch02\目录,执行下面的命令:
    jar -cvf ch02.war *

    这个命令将ch02目录下所有的子目录和文件都打包成一个名为ch02.war的归档文件。如果不想包含src目录及其下的Java源文件(在发布时不应该把Java源文件包含到WAR文件中),可以执行下面的命令:

    jar -cvf ch02.war *.html WEB-INF/

    要查看WAR文件的内容,可以执行下面的命令:jar -tf ch02.war

    这个命令将列出WAR文件的内容,或者用WinRAR工具软件查看ch02.war文件的内容,如图3-2所示。

    如果修改了某个Servlet类文件,需要替换WAR文件中的旧文件,可以执行下面的命令:
    jar -uf ch02.war WEB-INF/classes/org/
    sunxin/ch02/servlet/LoginServlet. class

    当然你也可以利用WinRAR软件来更新压缩包中的文件。

    如果我们将ch02.war文件放到%CATALINA_HOME%\webapps目录下,在Tomcat启动时,会自动解压这个WAR文件,按照打包前的目录层次结构生成与WAR文件的文件名同名的目录ch02及下面的子目录和文件。读者可以自己动手做一下实验,先删除在%CATALINA_HOME%\webapps目录下的ch02目录,然后将ch02.war文件复制到%CATALINA_HOME%\webapps目录下,启动Tomcat,你会看到在webapps目录下新产生了一个ch02目录。

    当然,我们也可以直接从WAR文件运行Web应用程序,打开%CATALINA_ HOME%\conf\server. xml文件,找到<Host>元素的配置处,如下所示:

    <Host name="localhost" appBase="webapps"
    unpackWARs="true" autoDeploy="true"
    xmlValidation="false" xmlNamespaceAware="false">

    将unpackWARs属性的值设置为false,这样,Tomcat将直接运行WAR文件。关于<Host>元素各属性的含义,请参看附录C或Tomcat的文档。
    删除Tomcat产生的目录ch02,重新启动Tomcat,查看%CATALINA_HOME%\webapps目录,可以看到这次没有产生ch02目录,打开浏览器,输入以前访问过的URL进行测试。

    在建立WAR文件之前,需要建立正确的Web应用程序的目录层次结构。

    建立WEB-INF子目录,并在该目录下建立classes与lib两个子目录。

    将Servlet类文件放到WEB-INF\classes目录下,将Web应用程序所使用Java类库文件(即JAR文件)放到WEB-INF\lib目录下。

    建立web.xml文件,放到WEB-INF目录下。

    根据Web应用程序的需求,将JSP页面或静态HTML页面放到上下文根路径下或其子目录下。

    如果有需要,建立META-INF目录,并在该目录下建立context.xml文件。

    只有在确保这些工作后都完成后,才开始建立WAR文件。

    要注意的是,虽然WAR文件和JAR文件的文件格式是一样的,并且都是使用jar命令来创建,但就其应用来说,WAR文件和JAR文件是有根本区别的。JAR文件的目的是把类和相关的资源封装到压缩的归档文件中,而对于WAR文件来说,一个WAR文件代表了一个Web应用程序,它可以包含Servlet、HTML页面、Java类、图像文件,以及组成Web应用程序的其他资源,而不仅仅是类的归档文件。

    我们什么时候应该使用WAR文件呢?在开发阶段不适合使用WAR文件,因为在开发阶段,经常需要添加或删除Web应用程序的内容,更新Servlet类文件,而每一次改动后,重新建立WAR文件将是一件浪费时间的事情。在产品发布阶段,使用WAR文件是比较合适的,因为在这个时候,几乎不需要再做什么改动了。

    在开发阶段,我们通常将Servlet源文件放到Web应用程序目录的src子目录下,以便和Web资源文件区分。在建立WAR文件时,只需要将src目录从Web应用程序目录中移走,就可以打包了。

  • 相关阅读:
    366. Find Leaves of Binary Tree输出层数相同的叶子节点
    716. Max Stack实现一个最大stack
    515. Find Largest Value in Each Tree Row查找一行中的最大值
    364. Nested List Weight Sum II 大小反向的括号加权求和
    156. Binary Tree Upside Down反转二叉树
    698. Partition to K Equal Sum Subsets 数组分成和相同的k组
    244. Shortest Word Distance II 实现数组中的最短距离单词
    187. Repeated DNA Sequences重复的DNA子串序列
    java之hibernate之基于主键的双向一对一关联映射
    java之hibernate之基于主键的单向一对一关联映射
  • 原文地址:https://www.cnblogs.com/henryhappier/p/1656170.html
Copyright © 2011-2022 走看看