在建立Java Web工程的时候发现IDEA中的Web工程结构似乎和Eclipse的Web工程结构不大一致,所以就想搞清楚Web工程结构是怎样的.

从Eclipse的非Maven工程开始

我的第一个Java IDE还是Eclipse,用它建立Web工程,只需要新建 Dynamic Web Project即可

clipboard.png

通常在Eclipse中配置完还要修改一下部署路径

clipboard.png

这个Deploy Path即为部署路径,是什么意思呢?就是Eclipse会把你的项目输出到Deploy Path中
那输出到Tomcat中文件结构和我们在Eclipse中看到的结构是否一致呢?

clipboard.png

显然并不是一致的,我主要关心的有三点:

1. java代码编译成的字节码去哪了?
2. 我引入的jar包去哪里了? 
3. META-INF 是干啥用的?

META-INF: 相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务 manifest.mf文件,在用jar打包时自动生成。
java代码生成的字节码在WEB-INF中的Classes文件下,我们引入的jar包在WEB-INF的lib文件下。

clipboard.png

所以你的项目要是报ClassNotFoundException时,你就先去lib文件下找找看,看有没有这个jar包。

Eclipse的Maven工程

clipboard.png

在新建Maven工程的时候我发现了这个,archetypes意味: 典型、原型。那archetype是究竟是什么意思了? 对此,我打开了Maven官网,
In short, Archetype is a Maven project templating toolkit
简而言之,archetype是一个maven项目模板工具包
其实官网还有一堆的解释,不过我都看的云里雾里的,在我看来原型就是一个目录结构模板,当你选择一个archetype的时候就是选择了一种项目结构,同样也包括你编译输出之后的结构,供Tomcat识别的结构。

clipboard.png

选择这个模板,生成的目录结构如下:

clipboard.png

但是选择怎样的模板,最后供Tomcat识别的还是如下:

clipboard.png

那我不选模板,还想建Web工程可不可以呢?
当然是可以的:

clipboard.png

clipboard.png

clipboard.png

右键选择 Java EE Tools 在选择Generate Deployment Descriptor stub 就自动产生了.(实在截不出来图)

IDEA的非Maven工程

选择模板

clipboard.png

clipboard.png

clipboard.png

我原本以为目录结构是和Java EE的版本是有关系的,但是当我选择Java EE6的时候,目录结构和Java EE8一样的,但是最后供TomCat识别的目录都是一致的。

不选择模板

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

IDEA的Maven工程

我是不大喜欢IDEA新建Web工程的Maven archetype,之前建Web工程我都是自己建,不过你选了模板也没多大关系,你只需要在Project Structure中看一下编译后的文件都输出到哪里就可以了。

选择模板

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

clipboard.png

不选择模板

clipboard.png

clipboard.png

clipboard.png

clipboard.png


北冥有只鱼
147 声望35 粉丝