GKLBB

当你经历了暴风雨,你也就成为了暴风雨

导航

文件格式分析 --- 最小war

 在格式上,WAR和JAR实际上是完全相同的,它们都是基于ZIP格式的压缩文件。两者的主要区别仅在于扩展名(.war vs .jar)和内部目录结构的约定。

WAR和JAR的主要区别如下:

  1. 用途不同:

    • JAR (Java Archive):用于打包普通的Java应用程序,包含Java类文件、资源文件和元数据
    • WAR (Web Archive):专门用于打包Web应用程序,包含Web资源、Servlet、JSP、HTML、JavaScript等
  2. 目录结构不同:

    • JAR文件:没有严格的目录结构要求,通常只需要包含:

       
       
      META-INF/ MANIFEST.MF com/ example/ *.class
    • WAR文件:必须遵循固定的Web应用目录结构:

       
       
      WEB-INF/ web.xml # Web应用配置文件 classes/ # Java类文件 lib/ # 依赖的JAR包 META-INF/ MANIFEST.MF index.html # Web资源文件 *.jsp, *.html等 # 其他Web资源
  3. 部署方式不同:

    • JAR文件:通常通过Java命令直接运行:java -jar app.jar
    • WAR文件:需要部署到Web服务器(如Tomcat)中运行:将war文件放入webapps目录
  4. 应用场景不同:

    • JAR:
      • 命令行应用
      • 桌面应用
      • 库文件
      • 可执行的独立应用
    • WAR:
      • Web应用
      • 需要处理HTTP请求的应用
      • 需要Web容器支持的应用
  5. 依赖处理:

    • JAR:依赖通常在MANIFEST.MF中声明或使用类路径
    • WAR:依赖JAR文件必须放在WEB-INF/lib目录下
  6. 访问方式:

    • JAR:通常通过main方法或API调用
    • WAR:通过HTTP请求访问,如:http://localhost:8080/myapp/

就像我们刚才的例子:

  • 我们创建了一个WAR文件,包含:
     
     
    hello.war ├── WEB-INF/ │ ├── web.xml # 配置Servlet映射 │ ├── classes/ │ │ └── com/example/ │ │ └── HelloServlet.class # Servlet类 │ └── lib/ │ └── servlet-api.jar # 依赖 └── index.html # 欢迎页面
  • 将其部署到Tomcat的webapps目录
  • 通过http://localhost:8081/hello/访问

如果这是一个普通的Java应用(JAR),我们就不需要web.xml,也不需要遵循这种目录结构,只需要包含必要的类文件和依赖即可。

posted on 2025-02-02 09:00  GKLBB  阅读(103)  评论(0)    收藏  举报