j2EE介绍
javaEE应用的分层模型
Domain Object(领域对象)层:此层由系列的POJO(Plain Old Java Object,普通的、传统的java对象)组成,这些对象是该系统的Domain Object,往往包含了各自所需要实现的业务逻辑方法。
DAO(Data Access Object,数据访问对象)层:此层由系统的DAO组建组成,这些DAO实现了对数据库的创建、查询、更新和删除(CRUD)等原子操作。
业务逻辑层:此层由系列的业务逻辑对象组成,这些业务逻辑对象实现了系统所需要的业务逻辑方法。这些业务逻辑方法可以仅仅用于暴露Domain Object对象所实现的业务逻辑方法,也可能是依赖DAO组件实现的业务逻辑方法。
控制器层:此层由系列控制器组成,这些控制器用于拦截用户请求,并调用业务逻辑组件的业务逻辑方法,处理用户请求,并根据处理结果转发到不同的表现层组件。
表现层:此层由系列的JSP页面、Velocity页面、PDF文档视图组件组成,负责收集用户请求,并将显示处理结果。
javaEE应用的组件
表现层组件:主要负责收集用户输入数据,或者向客户显示系统状态。最常用的表现层技术是JSP。其他的还有Velocity、FreeMarker和Tapestry等技术,或者使用普通的应用程序充当表现层组件,甚至可以是小型智能设备。
控制器组件:对于javaEE的MVC框架而言,框架提供一个前端核心控制器,而核心控制器负责拦截用户请求,并将请求转发给用户实现的控制器组件。而这些用户实现的控制器则负责处理调用业务逻辑方法,处理用户请求。
业务逻辑组件:是系统的核心组件,实现系统的业务逻辑。通常,一个业务逻辑方法对应一次用户操作。一个业务逻辑方法应该是一个整体的,因此我们要求对业务逻辑方法增加事务性。业务逻辑方法仅仅负责实现业务逻辑,不应该进行数据库访问。因此,业务逻辑组件中不应该出现原始的Hibernate、JDBC等API。这样可以保证业务逻辑方法的实现与具体的持久层访问技术分离。当系统需要在不同持久层技术之间切换时,系统的业务逻辑组件无须任何改变。
DAO组件:DataAccess Object,也被称为数据访问对象。这个类型的对象比较缺乏变化。每个DAO组件都提供Domain Object对象的基本的创建、查询、更新和删除等操作,这些操作对应于数据表的CRUD(创建、查询、更新和删除)等原子操作。
领域对象组件:领域对象(Domain Object)抽象了系统的对象模型。通常而言,这些领域对象的状态都必须保存在数据库里。因此,每个领域对象通常对应一个或多个数据表,领域对象通常需要提供对数据记录访问方式。
服务器:
web服务器:tomcat、jetty(可作为嵌入式服务器)、Resin(支持EJB)
javaEE服务器(支持更多的javaEE特性,例如分布式事务、EJB容器等):jBoss、WebLogic和WebSphere
虽然常把基于Web应用称为B/S架构的应用,但其实Web应用一样是C/S结构的应用,只是这种应用的服务器是Web服务器,而客户端是浏览器。
浏览器完成额事情:
(1)向远程服务器发送请求。
(2)读取远程服务器返回的字符串数据。
(3)负责根据字符串数据渲染出一个丰富多彩的页面。(建立HTML页面的DOM模型,支持JavaScript脚本程序等)
Web服务器则负责接受客户端请求,每当接受到客户端连接请求之后,Web服务器应该使用单独的线程为该客户端提供服务;接收请求数据、送回响应数据:
(1)启动单独的线程。
(2)使用I/O流读取用户的请求数据。
(3)从请求数据中解析参数。
(4)处理用户请求。
(5)生成响应数据。
(6)使用IO流向客户端发送请求数据。
1、2和6步是通用的,可以由服务器来完成,其他的因为不同请求里包含的请求参数不同,处理用户请求的方式也不同,所生成的响应自然也不同。实际上,Web服务器会调用Servlet的_jspServlce()方法来完成第3、4和5步,当我们编写JSP页面时,页面里的静态内容、JSP脚本都会转换成_jspService()方法的执行代码,这些执行代码负责完成解析参数、处理请求、生成响应等业务功能,而Web服务器则负责完成多线程、网络通信等底层功能。
Web服务器在执行了第3步解析到用户的请求参数之后,将需要通过这些请求参数来创建HttpServletRequest、HttpServletResponse等对象,作为调用_jspService()方法的参数,实际上一个Web服务器必须为Servlet API中绝大部分接口提供实现类。
Web应用里的JSP页面、Servlet等程序都将由Web服务器来调用,JSP、Servlet之间通常不会相互调用,为了解决交换数据的问题,Web服务器都会提供4个类是Map的结构,分别是application、session、request、page,并允许JSP、Servlet放入和取出数据。这4个Map结构的区别是范围不同。
(1)application:对于整个Web应用有效,一旦JSP、Servlet将数据放入application中,该数据将可以被该应用下其他所有的JSP、Servlet访问。
(2)session:仅对一次会话有效,一旦JSP、Servlet将数据放入session中,该数据将可以被本次会话的其他所有的JSP、Servlet访问。
(3)request:仅对一次请求有效,一旦JSP、Servlet将数据放入request中,该数据将可以被本次请求的其他所有的JSP、Servlet访问。
(4)page:仅对当前页面有效,一旦JSP、Servlet将数据放入page中,该数据将可以被当前页面的其他所有的JSP、Servlet访问。

浙公网安备 33010602011771号