基金会 Jakarta 项目组的一个 Open Source 项目,它采用 MVC 模式,能够很好地帮助 java 开发者利用 J2EE 开发 Web 应用。
和其他的 java 架构一样,Struts 也是面向对象设计,将 MVC 模式分离显示逻辑和业务逻辑的能力发挥得淋漓尽致。
Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles 与 XML 等标准技术,及 Jakarta Commons 的一些类库。
以 Struts 有一组相互协作的类(组件)Serlvet 以及 jsptag 、lib 组成。
基于 struts 构架的 web 应用程序基本上符合
JSP Model2 的设计标准,可以说是一个传统 MVC 设计模式的一种变化类型。
Struts 有其自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View)在 模型层,Struts 可以很容易的与数据访问技术相结合,如 JDBC / EJB, 。
以及其它第三方类库,如 Hibernate / iBATIS,或者 Object Relational Bridge对象关系桥。
在视图层,Struts 能够与
JSP,包括 JSTL 与 JSF,以及 Velocity 模板,XSLT 与其它表示层技术。
Struts 为每个专业的 Web 应用程序做背后的支撑, 帮助为你的应用创建一个扩展的开发环境。
Client browser(客户浏览器)来自客户浏览器的每个 HTTP 请求创建一个事件。
Web 容器将用一个 HTTP 响应作出响应。
Controller(控制器)控制器接收来自浏览器的请求,并决定将这个请求发往何处。
就 Struts 而言,控制器是以servlet 实现的一个命令设计模式。
struts-config.xml 文件配置控制器。
业务逻辑业务逻辑更新模型的状态,并帮助控制应用程序的流程。
就 Struts 而言,这是通过作为实际业务逻辑“瘦”包装的 Action 类完成的。
Model(模型)的状态模型表示应用程序的状态。
业务对象更新应用程序的状态。
ActionForm. bean 在会话级或请求级表示模型的状态,而不是在持久级。
JSP 文件使用
JSP 标记读取来自 ActionForm. bean的信息。
View(视图)视图就是一个
JSP 文件。
其中没有流程逻辑,没有业务逻辑,也没有模型信息--只有标记。
标记是使 Struts 有别于其他框架(如 Velocity)的因素之一4.structs2 架构图Struts 2 相对于 Struts 1.X,将实现用户业务逻辑(Action)同 Servlet API 分离开,这种分离机制,是采用了拦截器或者拦截器栈(拦截器链) 。
拦截器是 Struts 2 的核心内容之一。
Struts 2 内建了多个拦截器和拦截器栈(由多个拦截器形成的拦截器链) ,将用户的 Web 请求进行拦截处理,从而提供了更加丰富的功能,例如数据类型转换、国际化、文件上传等。
5.Hibernate 架构图Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate 可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在 Servlet/
JSP 的 Web 应用中使用,最具革命意义的是,Hibernate 可以在应用 EJB 的 J2EE 架构中取代 CMP,完成数据持久化的重任。
Hibernate 的核心接口一共有 5 个,分别为:Session、SessionFactory、Transaction、Query和 Configuration。
这 5 个核心接口在任何开发中都会用到。
通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
下面对这五个核心接口分别加以介绍。
Session 接口:Session 接口负责执行被持久化对象的 CRUD 操作CRUD 的任务是完成与数据库的交流,包含了很多常见的 SQL 语句。
。
但需要注意的是 Session 对象是非线程安全的。
同时,Hibernate 的 session 不同于
JSP 应用中的 HttpSession。
这里当使用 session 这个术语时,其实指的是 Hibernate 中的 session,而以后会将 HttpSesion 对象称为用户 session。
SessionFactory 接口:SessionFactory 接口负责初始化 Hibernate。
它充当数据存储源的代理,并负责创建 Session 对象。
这里用到了工厂模式。
需要注意的是 SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个 SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。
Configuration 接口:Configuration 接口负责配置并启动 Hibernate,创建 SessionFactory 对象。
在 Hibernate 的启动的过程中,Configuration 类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory 对象。
Transaction 接口:Transaction 接口负责事务相关的操作。
它是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query 和 Criteria 接口:Query 和 Criteria 接口负责执行各种数据库查询。
它可以使用 HQL 语言或 SQL 语句两种表达方式。
6.J2EE 架构图J2EE 是一套全然不同于传统应用开发的技术架构,包含许多组件,主要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。
J2EE 核心是一组技术规范与指南,其中所包含的各类组件、服务架构及技术层次,均有共通的标准及规格,让各种依循 J2EE 架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,导致企业内部或外部难以互通的窘境。
7.Oracle 架构图