在建立Java Web工程的时候发现IDEA中的Web工程结构似乎和Eclipse的Web工程结构不大一致,所以就想搞清楚Web工程结构是怎样的.
我的第一个Java IDE还是Eclipse,用它建立Web工程,只需要新建 Dynamic Web Project即可
通常在Eclipse中配置完还要修改一下部署路径
这个Deploy Path即为部署路径,是什么意思呢?就是Eclipse会把你的项目输出到Deploy Path中
那输出到Tomcat中文件结构和我们在Eclipse中看到的结构是否一致呢?
显然并不是一致的,我主要关心的有三点:
1. java代码编译成的字节码去哪了? 2. 我引入的jar包去哪里了? 3. META-INF 是干啥用的?
META-INF: 相当于一个信息包,目录中的文件和目录获得Java 2平台的认可与解释,用来配置应用程序、扩展程序、类加载器和服务 manifest.mf文件,在用jar打包时自动生成。
java代码生成的字节码在WEB-INF中的Classes文件下,我们引入的jar包在WEB-INF的lib文件下。
所以你的项目要是报ClassNotFoundException时,你就先去lib文件下找找看,看有没有这个jar包。
在新建Maven工程的时候我发现了这个,archetypes意味: 典型、原型。那archetype是究竟是什么意思了? 对此,我打开了Maven官网,
In short, Archetype is a Maven project templating toolkit
简而言之,archetype是一个maven项目模板工具包
其实官网还有一堆的解释,不过我都看的云里雾里的,在我看来原型就是一个目录结构模板,当你选择一个archetype的时候就是选择了一种项目结构,同样也包括你编译输出之后的结构,供Tomcat识别的结构。
选择这个模板,生成的目录结构如下:
但是选择怎样的模板,最后供Tomcat识别的还是如下:
那我不选模板,还想建Web工程可不可以呢?
当然是可以的:
右键选择 Java EE Tools 在选择Generate Deployment Descriptor stub 就自动产生了.(实在截不出来图)
我原本以为目录结构是和Java EE的版本是有关系的,但是当我选择Java EE6的时候,目录结构和Java EE8一样的,但是最后供TomCat识别的目录都是一致的。
我是不大喜欢IDEA新建Web工程的Maven archetype,之前建Web工程我都是自己建,不过你选了模板也没多大关系,你只需要在Project Structure中看一下编译后的文件都输出到哪里就可以了。