应用客户端容器、Applet容器、web容器:
应用客户端容器是指在客户端的Java运行时环境,一般就是客户端的Java虚拟机;在该容器内运行Jar文件。
Applet容器是指在浏览器内的Applet的Java运行时环境;在该容器内运行Applet;
web容器:在Web服务器端运行的Java运行时环境,一般是将客户端的请求转发到特定的Servlet;
在Ecliplse中安装了J2EE的插件后,在创建新的web项目时,有static web project和dynamic web project;
在Eclipse的帮助文档中,对这两个概念是这样定义的:
static web project: 包含HTML文件;一般用于content-based web application;即,全部是静态的web页面,内容为主;
dynamic web project:包含HTML文件、servlet、Jsp,还可以对数据进行访问;
Static Web Project与Dynamic web project的对比:
按照向导,创建一个static Web Project后,只有一个子目录,叫WebContent,顾名思义,就是存放静态web页面的地方;
而创建一个dynamic web project后,有三个目录,分别是WebContent、src和build;由此可见,对于dynamic web project,有一个编译的过程。
再看两者的nature:
Static Web Project有三个nature:
org.eclipse.wst.common.project.facet.core.nature
org.eclipse.wst.common.modulecore.ModuleCoreNature
org.eclipse.wst.jsdt.core.jsNature
而Dynamic Web Project有五个nature,除了Static Web Project拥有的三个nature外,它还有两个nature:
org.eclipse.jdt.core.javanature
org.eclipse.jem.workbench.JavaEMFNature
org.eclipse.wst这个包中的wst,我想应该是webservice tools的缩写;
而Dynamic Web Project多出的nature中,
org.eclipse.jdt.core.javanature是非常重要的;这表明了Dynamic Web Project这是一个java project;
而Static Web Project只是一个HTML页面的集合,不需要JDT插件去处理。
在Export时,也体现了这一点;
用Static Web Project打包,popupmenu的Export菜单是没有任何提示的;而且在Export成WAR时,认为这不是一个web project module;而Dynamic Web Project Export时,就有提示WAR,这就是通过Nature来识别的。
WAR和EAR:
WAR的全称是Web Application Archive;而EAR的全称是Enterprise Application Archive;
在Eclipse的帮助文档中,有描述WAR的格式;有两个重要的描述文件:
META-INF和WEB-INF
META-INF是MIME TYPE的;包含了一些配置信息;
WEB-INF是XML格式的;包含了一些部署信息;
WAR和EAR的关系:
一个WAR就是一个Web应用程序;在Dynamic Web project的Export中,有提示,是否将该Project添加到一个EAR中,由此可见,一个EAR是可以包含多个WAR的。
WAR和Web容器的关系;
Web容器将客户端的请求转发到WAR中;
将tomcat启动后,发现,当拷贝一个WAR到webapp目录下时,tomcat会自动将WAR解压为一个目录;
而tomcat停止时,拷贝,就不会有这个现象;而tomcat启动时,会自动检测webapp目录,如果发现war,就会解压。
tomcat与WAR的连接,不需要配置;拷贝后,可直接使用,访问;