1.MVC即Model-View-Controller的简称。
MVC是一种设计模式,它强制性的把应用程序的输入、处理和输出分开
视图(View):是用户看到并与之交互的界面。视图向用户显示相关数据,并接受用户的输入。但它不进行任何的业务逻辑处理。
模型(Model):模型表示业务数据和业务处理,相当于Javabean。一个模型能为多个视图提供数据。
控制器(Controller):当用户单击Web页面中的提交按钮时,控制器接受请求并调用相应的模型去处理请求。然后根据处理过程的结果调用相应的视图来显示处理的结果。
2.SSH框架
集成的SSH框架的系统从职能上分为四层:表示层、业务逻辑层、数据持久层和域模块层,以帮助开发人员在短期内搭建结构清晰、可复用性好、维护方便的Web应用程序。其中Struts作为系统的整体基础框架,负责MVC的分离,在Struts框架的模型部分,控制业务跳转,利用Hibernate框架对持久层提供支持,Spring做管理,管理Struts和Hibernate。具体做法是:用面向对象的分析方法根据需求提出一些模型,将这些模型实现为基本的Java对象,然后编写基本的DAO(Data
Access Objects)接口,并给出Hibernate的DAO实现,采用HIbernate架构实现的DAO类来实现Java类与数据库之间的转换和访问,最后由Spring做管理,管理Struts和Hibernate。
ActionServlet:是Struts1的核心控制器,负责拦截来自用户的请求。
Action:通常由用户提供,该控制器负责接收来自ActionServlet的请求,并根据该请求调用模块的业务逻辑方法处理请求,并将处理结果返回给JSP页面显示。
Model部分:
由ActionForm和JavaBean组成,其中ActionForm用于将用户的请求参数封装成ActionForm对象,该对象被ActionServlet转发给Action,Action根据ActionForm里面请求的参数处理用户的请求。
JavaBean则封装了底层的业务逻辑,包含数据库访问等。
View部分:
该部分采用JSP(或 HTML、PHP…)实现。
Struts提供了丰富的标签库,通过标签库可以减少脚本的使用,自定义的标签可以与Model有效交互,并增加了实现功能。
Controller组件:有两个部分组成----系统核心控制器和业务逻辑控制器。
系统核心控制器:对应ActionServlet,该控制器继承了HttpServlet类,因此可以配置成标注的Servlet。该控制器负责拦截所有的Http请求,然后根据用户请求决定是否需要转给业务逻辑控制器。
业务逻辑控制器:负责处理用户请求,本身不具备处理能力,而是调用Model来处理完成对应的Action部分。
Spring部分
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。
控制反转:Spring通过IoC技术促进松耦合,当应用了IoC,一个对象依赖的其他对像会通过被动的方式传递进来,而不是这个对象自己创建或者查找依赖对象,容器在对象初始化时不等对象请求就主动将依赖传递给他。
IoC:有了IoC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象。
面向切向:Spring提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统服务和事务进行内聚性的开发。应用对象只实现它们应该做的—完成业务逻辑—仅此而已。他们并不负责其它的系统级关注点。
*容器:Spring包含并管理应用对象的配置和生命周期。
*框架:Spring可以将简单的组件配置、组合成复杂的应用。在Spring中,应用对象被声明式地组合,典型的是在一个XML文件里。
Hibernate部分
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象思维来操纵数据库。Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用。
Hibernate的核心接口一共有5个,分别是:Session、SessionFactory、Transaction、Query和Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。
Session接口:Session接口负责执行被持久化对象的CRUDE操作(CRUD的任务是:完成与数据库的交流,包含了很多常见的SQL语句)。但是需要注意的是Session对象时非线程安全,同时Hibernate和Session不同于JSP应用中的HttpSession。这里当使用session这个术语时,其实指的是Hibernate中的session,而以后将HttpSession对象称为用户session。
SessionFactory接口:SessionFactory接口负责接口初始化Hibernate。他充当数据存储的代理,并负责创建Session对象,这里用到了工厂模式。需要注意的是SessionFactory并不是轻量级的,因为一般情况下,一个项目通常只需要一个SessionFactory就够,当需要操作多个数据库时,可以为每个数据库指定一个SessionFactory。
Configuration接口:Configuration接口负责配置并启动Hibernate,创建SessionFactory对象。在Hibernate的启动过程中,Configuration类的实例首先定位映射文档位置、读取配置,然后创建SessionFactory对象。
Transaction接口:Transaction接口负责事务相关操作。他是可选的,开发人员也可以设计编写自己的底层事务处理代码。
Query和Criteria接口:Query和Criteria接口负责执行各种数据库查询。它可以使用HQL语言和SQL语句两种表达方式。