1.Java Web 模块结构
JSP文件和AXPX文件类似,路径和URL一一对应,都会被动态编译为单独class。Java Web和ASP.NET的核心是分别是Servlet和IHttpHandler接口,因此无论是基础的Page文件(JSP、ASPX)方式还是后来发展的MVC方式(Spring MVC、ASP.NET MVC)都是基于核心接口的基础上再次封装和扩展(DispatcherServlet、MvcHandler)。
除JSP文件外,其他全部文件部署在应用目录的WEB-INF子目录下,WEB-INF目录可以认为是ASP.NET中将web.config文件、bin目录和App_开头的运行时目录存放在了一个统一的根目录中。
Java Web的配置文件web.xml也存放在WEB-INF目录下,而ASP.NET的配置文件web.config一般直接存放在应用目录下(ASP.NET其他目录同样可以有web.config文件)。ASP.NET将所有的引用和代码生成的dll都部署在bin中,而Java Web的引用jar和生成的class分别存放在WEB-INF的子目录lib和classes中(参考1)。
综上,类似ASP.NET中的web.config、bin、App_Data等,Java Web中的WEB-INF、web.xml、lib和classes是我们必须了解和掌握的。
|--Assembly Root |---WEB-INF/ |--web.xml |--lib/ |--classes/
- WEB-INF目录:Java Web文件的根目录。
- web.xml文件:配置文件(asp.net web.config)。
- lib目录:存放类库文件(asp.net bin)。
- classes目录:存放class文件(asp.net bin)。
2.Java Web项目的基本结构[Eclipse Dynamic Web Project]
Eclipse Dynamic Web Project项目
(1)可以配置需要编译的源码目录和输出目录,默认编译src目录下的源文件到build\classes目录下。
(2)可以配置WEB-INF的根目录,默认为WebContent。
(3)可以选择是否生成默认web.xml文件。
我们创建一个命名为DynamicWP的默认生成web.xml的Dynamic Web Proejct项目。文件结构如下:
|--DynamicWP |--.settings/ |--build/ |--classes/ |--src/ |--WebContent/ |--META-INF/ |--MANIFEST.MF |--WEB-INF/ |--web.xml |--lib/
在Eclipse的项目资源管理器中DyanmicWP项目的视图如下:
|--DynamicWP |--Deployment Desciptor |--JAX-WS Web Services |--Java Resources |--JavaScript Resources |--build |--WebContent |--META-INF/ |--MANIFEST.MF |--WEB-INF/ |--web.xml |--lib/
- .settings为Eclipse项目文件夹,存放了Eslipse项目的各种配置。在Eclipse项目视图中不可见。
- src目录存放源码。在Eclipse的项目视图中对应为Java Resources/src。
- build存放编译后的文件。
- 可以在类似的\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\DynamicWP目录中查看运行时的文件结构。
3.Maven Web项目的基本结构
鉴于目前Java IDE众多并且都有一定的拥泵,Eclipse的Java Web项目不具有可移植性。Maven即解决了项目结构的规范问题又提供了强大引用处理等强大的功能,在项目布局等方面已经是目前事实上的标准。Maven项目的主要结构如下(参考2):
|--root |--pom.xml |--src/ |--main/ |--java/ |--resources/ |--webapp/ |--test/ |--java/ |--resources |--target/
Eclipse中新建一个Maven web app项目。文件结构如下:
|--MavenWP |--pom.xml |--.project |--.classpath |--.settings/ |--src/ |--target/ |--classes/ |--m2e-wtp/
- pom.xml:maven项目配置文件。
- .project文件和.classpath文件以及.settings目录和target/m2e-wtp目录下的文件为Eclipse项目配置文件。
- src和target:maven标准项目目录。
Eclipse4.5.1中对应的项目资源管理视图
|--MavenWP |--Deployment Desciptor/ |--Java Resources/ |--JavaScript Resources/ |--Deployed Resources/ |--src |--target |--pom.xml
- 默认创建的项目会添加一个index.jsp并报错:使用maven搜索并添加servlet依赖更新后就可以正常运行。
- Java构建路径问题警告:使用maven搜索并添加compiler插件并配置configuration节点更新就可以消除。
- 墙的问题配置maven镜像,我采用的是http://maven.oschina.net/content/groups/public/。
- 默认创建的maven webapp缺少的src/main/java、src/test/java和src/test/resources等目录需要自己手动添加。
- 修改.settings/org.eclipse.wst.common.project.facet.core.xml,更