Weblogic教程

开源框架综述

struts 简介

Struts 是 Apache 基金会 Jakarta 项目组的一个 Open Source 项目,它采用 MVC 模式,能够很好地帮助 java 开发者利用 J2EE 开发 Web 应用。和其他的 java 架构一样,Struts 也是面向对象设计,将 MVC 模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlet,JavaBean,ResourceBundle 与 XML 等标准技术,以及 Jakarta Commons 的一些类库。Struts 由一组相互协作的类(组件)、Servlet 以及 jsp tag lib 组成。基于 struts 构架的 web 应用程序基本上符合 JSP Model2 的设计标准,可以说是一个传统 MVC 设计模式的一种变化类型。

1.  Model 部分

由 JavaBean 组成,ActionForm 用于封装用户的请求参数,封装成 ActionForm 对象,该对象被 ActionServlet 转发给 Action,Action 根据 ActionFrom 里面的请求参数处理用户的请求。

JavaBean 则封装了底层的业务逻辑,包括数据库访问等。

2.  View 部分

该部分采用 JSP 实现。

Struts 提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签库可以实现与 Model 的有效交互,并增加了现实功能。

3.  Controller 组件

Controller 组件有两个部分组成——系统核心控制器,业务逻辑控制器。

系统核心控制器,对应 Structs 中的 ActionServlet。该控制器由 Struts 框架提供,继承 HttpServlet 类,因此可以配置成标注的 Servlet。该控制器负责拦截所有的 HTTP 请求,然后根据用户请求决定是否要转给业务逻辑控制器。

业务逻辑控制器,负责处理用户请求,本身不具备处理能力,而是调用 Model 来完成处理,对应 Action 部分。


Spring 简介

Spring 是一个开源框架,它由 Rod Johnson 创建。它是为了解决企业应用开发的复杂性而创建的。Spring 使用基本的 JavaBean 来完成以前只可能由 EJB 完成的事情,然而,Spring 的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java 应用都可以从 Spring 中受益。

  • 目的:解决企业应用开发的复杂性
  • 功能:使用基本的 JavaBean 代替 EJB,并提供了更多的企业应用功能
  • 范围:任何 Java 应用
  • 简单来说,Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

    1.  轻量

    从大小与开销两方面而言 Spring 都是轻量的。完整的 Spring 框架可以在一个大小只有 1MB 多的 JAR 文件里发布。并且 Spring 所需的处理开销也是微不足道的。此外,Spring是非侵入式的:典型地,Spring 应用中的对象不依赖于 Spring 的特定类。

    2.  控制反转

    Spring 通过一种称作控制反转(IoC)的技术促进了松耦合。当应用了 IoC,一个对象依赖的其它对象会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象。你可以认为 IoC 与 JNDI 相反--不是对象从容器中查找依赖,而是容器在对象初始化时不等对象请求就主动将依赖传递给它。

    3.  面向切面

    Spring 提供了面向切面编程的丰富支持,允许通过分离应用 的业务逻辑与系统级服务(例如审计(auditing)和事务(transaction)管理)进行内聚性的开发。应用对象只实现它们应该做的--完成业务逻辑--仅此而已。它们并不负责(甚至是意识)其它的系统级关注点,例如日志或事务支持。

    4.  容器

    Spring 包含并管理应用对象的配置和生命周期,在这个意义上它是一种容器,你可以配置你的每个 bean 如何被创建——基于一个可配置原型(prototype),你的 bean 可以创建一个单独的实例或者每次需要时都生成一个新的实例——以及它们是如何相互关联的。然而,Spring 不应该被混同于传统的重量级的 EJB 容器,它们经常是庞大与笨重的,难以使用。

    5.  框架

    Spring 可以将简单的组件配置、组合成为复杂的应用。在 Spring 中,应用对象被声明式地组合,典型地是在一个 XML 文件里。Spring 也提供了很多基础功能(事务管理、持久化框架集成等等),将应用逻辑的开发留给了使用者。

    所有 Spring 的这些特征使你能够编写更干净、更可管理、并且更易于测试的代码。它们也为 Spring 中的各种模块提供了基础支持。Spring 是潜在地一站式解决方案,定位于与典型应用相关的大部分基础结构。它也涉及到其他 framework 没有考虑到的内容,并有如下具体特点

  • 方便解耦,简化开发
  • 通过 Spring 提供的 IoC 容器,我们可以将对象之间的依赖关系交由 Spring 进行控制,避免硬编码所造成的过度程序耦合。有了 Spring,用户不必再为单实例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

  • AOP 编程的支持
  • 通过 Spring 提供的 AOP 功能,方便进行面向切面的编程,许多不容易用传统 OOP 实现的功能可以通过 AOP 轻松应付。

  • 声明式事务的支持
  • 在 Spring 中,我们可以从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活地进行事务的管理,提高开发效率和质量。

  • 方便程序的测试
  • 可以用非容器依赖的编程方式进行几乎所有的测试工作,在 Spring 里,测试不再是昂贵的操作,而是随手可做的事情。

  • 方便集成各种优秀框架
  • Spring 不排斥各种优秀的开源框架,相反,Spring 可以降低各种框架的使用难度,Spring 提供了对各种优秀框架(如 Struts,Hibernate、Hession、Quartz)等的直接支持。

  • 降低 J2EE API 的使用难度
  • Spring 对很多难用的 J2EE API(如 JDBC,JavaMail,远程调用等)提供了一个薄薄的封装层,通过 Spring 的简易封装,这些 J2EE API 的使用难度大为降低。


    Hibernate 简介

    Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装,使得 Java 程序员可以随心所欲的使用对象编程思维来操作数据库。 Hibernate可以应用在任何使用 JDBC 的场合,既可以在 Java 的客户端程序使用,也可以在Servlet/JSP 的 Web 应用中使用,最具革命 意义的是,Hibernate 可以在应用 EJB 的 J2EE架构中取代 CMP,完成数据持久化的重任。

    Hibernate 的核心接口一共有 5 个,分别为:Session、SessionFactory、Transaction、Query 和 Configuration。这 5 个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五个核心 接口分别加以介绍。

    1.  Session 接口

    Session 接口负责执行被持久化对象的 CRUD 操作(CRUD 的任务是完成与数据库的交流,包含了很多常见的 SQL 语句。)。但需要注意的是 Session 对象是非线程安全的。同时,Hibernate 的 session 不同于 JSP 应用中的 HttpSession。这里当使用 session 这 个术语时,其实指的是 Hibernate 中的 session,而以后会将 HttpSession 对象称为用户session。

    2.  SessionFactory 接口

    SessionFactory 接口负责初始化 Hibernate。它充当数据存储源的代理,并负责创建Session 对象。这里用到了工厂模式。需要注 意的是 SessionFactory 并不是轻量级的,因为一般情况下,一个项目通常只需要一个 SessionFactory 就够,当需要操作多个数据库时,可以为每个数据库指定一个 SessionFactory。

    3.  Configuration 接口

    Configuration 接口负责配置并启动 Hibernate,创建 SessionFactory 对象。在Hibernate 的启动的过程中,Configuration 类的实例首先定位映射文档位置、读取配置,然后创建 SessionFactory 对象。

    4.  Transaction 接口

    Transaction 接口负责事务相关的操作。它是可选的,开发人员也可以设计编写自己的底层事务处理代码。

    5.  Query 和 Criteria 接口

    Query 和 Criteria 接口负责执行各种数据库查询。它可以使用 HQL 语言或 SQL 语句两种表达方式。

    关注微信获取最新动态