JavaWeb开发:jar包和war包区别和⽬录结构
JavaWeb开发:jar包和war包区别和⽬录结构,深⼊了解:
1.jar包的介绍
JAR(Java Archive,Java 归档⽂件)是与平台⽆关的⽂件格式,它允许将许多⽂件组合成⼀个压缩⽂件。JavaSE程序可以打包成Jar包(J其实可以理解为Java了)。
JAR ⽂件格式以流⾏的 ZIP ⽂件格式为基础。与 ZIP ⽂件不同的是,JAR ⽂件不仅⽤于压缩和发布,⽽且还⽤于部署和封装库、组件和插件程序,并可被像编译器和 JVM 这样的⼯具直接使⽤。在 JAR 中包含特殊的⽂件,如 manifests 和部署描述符,⽤来指⽰⼯具如何处理特定的 JAR。
简单来说,jar包就是别⼈已经写好的⼀些类,然后对这些类进⾏打包。可以将这些jar包引⼊到你的项⽬中,可以直接使⽤这些jar包中的类和属性,这些jar包⼀般放在lib⽬录下。
2.war包的介绍
war是⼀个可以直接运⾏的web模块,通常⽤于⽹站,打成包部署到容器中。以Tomcat来说,将war包放置在其\webapps\⽬录下,然后启动Tomcat,这个包就会⾃动解压,就相当于发布了。
war包是Sun提出的⼀种web应⽤程序格式,与jar类似,是很多⽂件的压缩包。war包中的⽂件按照⼀定⽬录结构来组织。根据其根⽬录下包含有html和jsp⽂件,或者包含有这两种⽂件的⽬录,另外还有WEB-INF⽬录。通常在WEB-INF⽬录下含有⼀个l⽂件和⼀个classes⽬录,l是这个应⽤的配置⽂件,⽽classes⽬录下则包含编译好的servlet类和jsp,或者servlet所依赖的其他类(如JavaBean)。通常这些所依赖的类也可以打包成jar包放在WEB-INF下的lib⽬录下。
简单来说,war包是JavaWeb程序打的包,war包⾥⾯包括写的代码编译成的class⽂件,依赖的包,配置⽂件,所有的⽹站页⾯,包括html,jsp等等。⼀个war包可以理解为是⼀个web项⽬,⾥⾯是项⽬的所有东西。
3.区别:(WAR⽂件代表了⼀个Web应⽤程序,JAR是类的归档⽂件。)
如果⼀个Web应⽤程序的⽬录和⽂件⾮常多,那么将这个Web应⽤程序部署到另⼀台机器上,就不是很⽅便了,这时可以将Web应⽤程序打包成Web 归档(WAR)⽂件,这个过程和把Java类⽂件打包成JAR⽂件的过程类似。利⽤WAR⽂件,可以把Servlet类⽂件和相关的资源集中在⼀起进⾏发布。在这个过程中,Web应⽤程序就不是按照⽬录层次结构来进⾏部署了,⽽是把WAR⽂件作为部署单元来使⽤。
⼀个WAR⽂件就是⼀个Web应⽤程序,建⽴WAR⽂件,就是把整个Web应⽤程序(不包括Web应⽤程序层次结构的根⽬录)压缩起来,指定⼀个.war扩展名。
要注意的是,虽然WAR⽂件和JAR⽂件的⽂件格式是⼀样的,并且都是使⽤jar命令来创建,但就其应⽤来说,WAR⽂件和JAR⽂件是有根本区别的。JAR⽂件的⽬的是把类和相关的资源封装到压缩的归档⽂件中,⽽对于WAR⽂件来说,⼀个WAR⽂件代表了⼀个Web应⽤程序,它可以包含 Servlet、HTML页⾯、Java类、图像⽂件,以及组成Web应⽤程序的其他资源,⽽不仅仅是类的归档⽂件。
那么什么时候应该使⽤WAR⽂件呢?在开发阶段不适合使⽤WAR⽂件,因为在开发阶段,经常需要添加或删除Web应⽤程序的内容,更新Servlet类⽂件,⽽每⼀次改动后,重新建⽴WAR⽂件将是⼀件浪费时间的事情。在产品发布阶段,使⽤WAR⽂件是⽐较合适的,因为在这个时候,⼏乎不需要再做什么改动了。
javaservlet和jsp的比较在开发阶段,我们通常将Servlet源⽂件放到Web应⽤程序⽬录的src⼦⽬录下,以便和Web资源⽂件区分。在建⽴WAR⽂件时,只需要将src⽬录从Web应⽤程序⽬录中移⾛,就可以打包了。
4.部署war包到Tomcat
1). 我这⾥⼯作中⼀般是开发打war包给测试,⽐如说现在测试拿到⼀个war包,名字叫test.war。
2). 打开Tomcat的安装路径 ,假设是“D:\Tomcat\apache-tomcat-7.0.68”,然后进⼊到 webapps⽂件夹中,把 test.war放到webapps⽂件夹。
3). 启动Tomcat。
如果不需要更改配置⽂件:到这⼀步就可以了。
在浏览器输⼊“http:localhost:tomcat_port/test即可打开test项⽬的 index.jsp页⾯(port是⾃⼰的端⼝号)。如果test项⽬没有index.jsp页⾯,那就需要打开其他相应的页⾯。
如果需要更改配置⽂件:
4). 关闭 Tomcat。
5). 删除 test.war⽂件(如果在tomcat启动的状态下删去war包,解压好的⽂件夹也会被⼀并删除,所以需要在解压后停⽌tomcat, 然后删掉war包,这时再启动。这时项⽬⽂件夹就会被认为不是war解压⽽来。)。
6). 由于刚刚启动过Tomcat,Tomcat会⾃动解压缩test.war为 test⽂件夹。所以我们在webapps下⾯可以看到test⽂件夹。打开test⽂件夹更改配置⽂件即可。
7). 更新完配置之后,启动Tomcat。
8). 浏览器打开即可。
5.Spring Boot项⽬可以制作成jar包和war包,其⽬录结构是不⼀样的,具体的如下所⽰:
1、war包⽬录结构分析
WAR(Web Archivefile)⽹络应⽤程序⽂件,是与平台⽆关的⽂件格式,它允许将许多⽂件组合成⼀个压缩⽂件。
WAR包标准⽬录结构:
说明:
1、index.jsp[可选]
2、METAINF[MAVEN⾃动⽣成⽬录]
3、WEB-INF[必含]
①classes⽬录:存放Java类⽂件
②lib⽬录:所需要的jar包
③l:war的描述⽂件
4、subdirectories[可选⽬录]
存放⼀些⽹页和照⽚,如:html,jsp,js,jpg等等。
2、jar包⽬录结构分析
example.jar
|
+-META-INF
|+-MANIFEST.MF
+-org
|+-springframework
|+-boot
|+-loader
|+-<spring boot loader classes>
+-BOOT-INF
+-classes
|+-mycompany
|+-project
|+-YourClasses.class
+-lib
+-dependency1.jar
+-dependency2.jar
说明:
SpringBoot提供的bootstrap的类是放到包的最外⾯,⽐如上⾯的org.springframework.boot.loader。
应⽤程序的代码则是需要放到BOOT-INF/classes⽬录下⾯;然后应⽤程序依赖的其他的jar包⽂件需要放到BOOT-INF/lib⽬录下。
当这个jar作为standardalone的程序运⾏时(没有放到container),SpringBoot会在⽣成的META-INF/MANIFEST.MF⾥⾯将Main-Class设置成org.springframework.boot.loader.JarLauncher,JarLauncher类会创建⼀个spring⾃⼰的ClassLoader: LaunchedURLClassLoader, 这个classloader 会
就能通过URL来加载上⾯BOOT-INF/lib⾥⾯所依赖的包,并且通过反射Manifest⾥⾯的Start-Class⾥⾯定义的类,然后invoke这个类⾥⾯的main⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论