1、 中文 3330字 2200单词 基于 SSH的 web技术介绍 1、引言 随着 Java技术的逐渐成熟与完善,作为建立企业级应用的标准平台, J2EE平台得到了长足的发展。借助于 J2EE规范中包含的多项技术: Enterprise JavaBean(EJB)、 Java Servlets(Servlet)、 Java Server Pages(JSP)、 Java Message Service(JMS)等,开发出了许多应用系统。但是,在传统 J2EE应用的开发过程中也出现了一些问题: 1)数据模型和逻辑模型之间的矛盾。目前 使用的数据库基本上都是关系型数据库,而 Java本质 上是一种面
2、向对象的语言,对象在存储和读取时使用 SQL和JDBC进行数据库操作,降低了编程的效率以及系统的可维护性。 2)传统的 J2EE应用多采用基于 EJB的重量级框架,这种框架适合于开发大型企业应用,但是使用 EJB容器进行开发和调试需要耗费大量时间。为了降低代码的耦合性,提高系统的开发效率,本文提出了一种基于 Struts框架、 Spring框架和 Hibernate框架 的 J2EE应用开发策略。 2、用 Struts实现 MVC架构 MVC( Model-View-Controller) 由 Trygve Reenskaug提出,首先被应用在SmallTalk-80环境中,是许多交互和界面系
3、统的构成基础。根据界面设计可变性的需求, MVC把交互系统的组成分解成模型、视图、控制器三部分。 模型 ( Model)是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能的计算关系,独立于具体的界面表达和 I/O操作。 视图 ( View) 把表示模型数据及逻辑关系和状态的信息及特定形式展示给用户。它从模型获得显示信息,对于相同的信息可以有多个不同的显示形 式或视图。控制器 ( Controller) 是处理用户与软件的交互操作的,其职责是控制提供模型中任何变化的传播,确保用户界面于模型间的对应联系;它接受用户的输入,将输入反馈给模型,进而实现对模
4、型的计算控制,是使模型和视图协调工作的部件。通常一个视图对应一个控制器。模型、视图与控制器的分离,使得一个模型可以具有多个显示视图。如果用户通过某个视图的控制器改变了模型的数据,所有其它依赖于这些数据的视图都应反映到这些变化。因此,无论何时发生了何种数据变化,控制器都会将变化通知所有的视图,导致显示的更新。这实际上是一种模型的变化 -传播机制。 Struts框架最早是作为 Apache Jakarta项目的组成部分问世运做,它继承了 MVC的各项特性,并根据 J2EE的特点,做了相应的变化与扩展。 Struts框架很好的结合了 Jsp, Java Servlet, Java Bean, Tag
5、lib等技术。在 Struts中,承担 MVC中控制器角色的是 ActionServlet。 ActionServlet是一个通用的控制组件。这个控制组件提供了处理所有发送到 Struts的 HTTP请求的入口点。它截取和 分发这些请求到相应的动作类(这些动作类都 是 Action类的子类)。另外控制组件也负责用相应的请求参数填充 Action Form( FromBean) ,并传给动作类 ( ActionBean) 。动作类访问核心商业逻辑,即访问 Java Bean或调用 EJB。最后动作类把控制权传给后续的 JSP文件,由 JSP文件生成视图。所有这些控制逻辑利用 Struts-con
6、fig.xml文件来配置。在 Struts框架中,视图主要由 JSP生成页面完成, Struts提供丰富的 JSP标签库,这有利于分开表现逻辑和程序逻辑。模型以一个或多个 Java Bean的形式存在。在 Struts中,主要存在三种 Bean,分别是 : Action, ActionForm, EJB或者 Java Bean。 Struts框架没有具体定义模型层的实现,在实际开发中,模型层通常是和业务逻辑紧密相连的,并且要对底层数据进行操作。下面介绍一种开发策略,将 Hibernate引入到 Struts框架的模型层中,使用它来进行数据封装和映射,提供持久化的支持。 3、 Spring 应用
7、构架 Spring 明显区别于其他轻量级 application framework, 它将专注于 web 的支持,与 struts 和 webwork 有着明显的区别。在和 struts 和 webwork 的对比上 ,Spring 是一个服务于所有层面的 application framework:提供了 bean 的配置基础 , AOP 的支持, JDBC 的提取框架,抽象事务支持,等等。它有一个非常显著的特点:在某个层面上如果你不需要 Spring 的支持,你就可以不使用 String 的class,只使用它的某一部分的功能。 从它的设计理念,你可以看到 String 帮助你实现了真正
8、的逻辑层和 web 层的分离:例如。一个校验应用将不用依靠controllers,就可以实现。这样的目标 是 更好的重用和易测:过分依靠不必要的容器和框架将不能实现这一点。 当然 ,Spring 的自己的 web 支持和通常框架模式的细致完整 .然而, Spring替换 struts,webwork 或者其他的 web 方案非常的容易 .对于 Spring 的 web 支持或者不同的地方, Spring 允许你在 web 容器里面建立一个中间层,在测试环境或者标准独立的应用里面来设置重用你的商务逻辑 .还有在 J2EE 环境里面,你的商务逻辑不必依靠容器提供的服务,像 JTA ,EJB 的支持 .良好的构架的 web 应用可以运行在任何容器上,如, Tomcat 或者 Resin. 值得注意的是 , Spring 不是和已经存在的解决方案进行竞争 . 我们鼓励结合标准的技术,如, Servlet, JSP, JTA, JNDI, JDBC, and JDO, 和非常匹配的工具,如 , Hibernate, Velocity, Log4J,