Java EE应用概述
今天我们说的Java EE应用,往往超出了Sun所提出的经典Java EE应用规范,而是一种更广泛的开发规范。
1.1.1Java EE应用的分层模型
Domain Object(领域对象)层:此层由系列的POJO(plain old java object)组成,这些对象是该系统的Domain Object,往往包含了各自所需实现的业务逻辑方法。
DAO(数据访问对象)层:此层由系列的Dao组件组成,这些Dao实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。
业务逻辑层:此层由系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可能仅仅用于暴露Domain Object对象所实现的业务逻辑方法,也可能是依赖Dao组件实现的业务逻辑方法。
控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成,负责收集用户请求,并将显示处理结果。
1.1.2Java EE应用的组件
表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP,但JSP并不是唯一的表现层技术。表现层还可由Velocity、Freemarker和Tapestry等技术完成,或者使用普通的应用程序充当表现层组件,甚至可以是小型智能设备。
控制层组件:对于Java EE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求,并将请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。
业务逻辑组件:是系统的核心组件,实现系统的业务逻辑。通常,一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体的,因此我们要求对业务逻辑方法增加事务性。业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据访问。因此,业务逻辑组件中不应该出现原始的Hibernate、JDBC等API。
DAO组件:Data Access Object。这个类型的对象比较缺乏变化,每个DAO组件都提供Domain Object对象基本的创建、查询、更新、删除等操作,这些操作对应于数据表的CRUD的原子操作。当然,如果采取不同的持久层访问技术,DAO组件的实现会完全不同。为了业务逻辑组件的实现与DAO组件的实现分离,我们为每个DAO组件都提供接口,业务逻辑组件面向DAO接口编程,从而提供更好的解耦。
领域对象组件:Domain Object抽象了系统的对象模型。通常而言,这些领域对象的状态都必须保存在数据库里。因此,每个领域对象通常对应一个或多个数据表,领域对象通常需要提供对数据记录访问方式。
轻量级Java EE应用相关技术
轻量级Java EE应用以传统的JSP作为表现层技术,以系列开源框架作为MVC层、中间层、持久层解决方案,并将这些开源框架有机的组合在一起,使得Java EE应用具有高度的可扩展性、可维护性。
1.2.1 JSP、Servlet 3.0 和JavaBean及代替技术
。。。。。。
1.2.2 Struts2.2及替代技术
Struts是全世界最早的MVC框架,其作者是JSP规范的制作者,并参与了Tomcat开发,所以Struts从诞生的第一天起,就备受Java EE应用者的青睐。多年来,Struts却是Java EE应用中使用最广泛的MVC框架,拥有广泛的市场支持。
虽然Struts如此优秀,但在MVC框架领域还有另外两个代替者:JSF和Tapestry。
1.3 Tomcat
1.3.2配置Tomcat的服务端口
Tomcat的配置文件都放在conf目录下,控制端口的配置文件也放在该路径下。打开conf下的server.xml文件,务必使用记事本或vi等无格式的编辑器,不要使用如写字板等有格式的编辑器。地位于server.xml文件的68行处看到如下代码
<Connector port="8080" protocol="HTTP/1.1" ConnectionTimeout="2000" redirectPort="8443"/>
如果需要让Tomcat运行多个服务,只需要复制server.xml文件中的<Service>元素,并修改相应的参数便可以实现一个Tomcat运行多个服务,当然必须在不同的端口提供服务。
在Web应用开发阶段,通常希望Tomcat能列出Web应用根路径下所有页面,这样能更方便地选择需要调试的Jsp页面。默认情况下,出于安全考虑,Tomcat并不会列出Web应用根路径下的所有页面,为了让Tomcat列出web应用根路径下的所有页面,可以打开Tomcat的conf目录下的web.xml文件,在该路径的104、105两行,看到一个listings参数,该参数的默认是false,将该参数改为true即可让Tomcat列出Web应用根路径下的所有页面。
<init-param> <param-name>listings</param-name> <param-value>true</param-value> </init-param>
Tomcat有三个控制台:一个是Server Status控制台,另一个是Manager App控制台,还有一个是Host Manager控制台。Status用于监控服务器状态,而Manager可以部署、监控Web应用,因此我们通常只使用Manager控制台即可。
1.3.4 部署Web应用
利用Tomcat的自动部署
利用控制台部署
增加自定义的Web部署文件
修改server.xml文件部署Web应用
利用Tomcat自动部署方式是最简单、最常用的方式。我们只要将一个Web应用复制到Tomcat的webapps下,系统将会把该应用部署到Tomcat中。
利用控制台部署Web应用也很简单,只要我们在部署Web应用的控制台输入即可。
第三种方式则无须将Web应用复制到Tomcat安装路径下,只是部署方式稍稍复杂一点,我们需要在conf目录下新建Catalina目录,再在Catalina目录下新建localhost目录,最后在该目录下新建一个名字任意的XML文件--该文件就是部署Web应用的配置文件,该文件的主文件名将作为Web应用的虚拟路径。