序
在学习j2EE过程中,尤其是学习框架过程,对许多出现的名词和词汇并不了解,因此造成了很多的时间上的浪费,为了给后来学习的人做个总结,也为了给自己做个备忘录,因此将我自己学习过程中遇到的一些词汇进行汇总。
1.MVC框架
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。
MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式:
Model(模型)表示应用程序核心(比如数据库记录列表)。
View(视图)显示数据(数据库记录)。
Controller(控制器)处理输入(写入数据库记录)。
MVC 模式同时提供了对 HTML、CSS 和 JavaScript 的完全控制。
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
MVC分层同时也简化了分组开发。不同的开发人员可同时开发视图、控制器逻辑和业务逻辑。
在web应用开发过程中,后端程序员的重点任务应该在MC两个层面上,即用户交互控制和数据模型处理。
1.Model层面主要的任务是与数据库建立链接,与数据库中的表单数据进行交互,在Web开发中,一般将model层分为Entity块,Dao块和service块(下一章将进行详细讲解)。
2.Controller层主要负责用户需求的转发以及各个页面的业务逻辑关系,具体的处理方式为servlet,通过不同的Action在不同的服务间进行跳转。很简单的例子就是,登陆过程中,当我们向web应用提交数据时,由Controller负责选择采取的不同action调用不同的Service进行数据的处理,当Service返回处理结果后根据不同的结果调用不同的页面返回给用户。
2.常用的分层关系
3.与主流框架的对应关系
MVC三层架构:模型层,控制层和视图层。模型层,用Hibernate框架让来JavaBean在数据库生成表及关联,通过对JavaBean的操作来 对数据库进行操作;控制层,用Struts框架来连接数据层和视图层的,接收、处理、发送数据并控制流程;视图层,用JSP模板把页面展现给用户以及提供 与用户的交互。而Spring框架粘合了Hibernate和Struts,透明的管理了整个架构,提供IOC容器使代码松耦合以及AOP框架的切面功能 等等。
接着上面饭店的例子,Struts是完整的Controller功能,即饭店的前台调度,客人点什么菜,要什么口味都是struts负责传达调度。Hibernate类似于饭店的厨房后台,给整个Web应用提供与原材料即数据库的直接沟通,把原材料都放到厨房空间,让Struts选择哪个菜系的厨师(Service层)去烹调(Dao层)这些原材料。而Spring更像是整个饭店的老板,厨房需要刀就给一把刀(Ioc),并且规范前台服务员要统一装束,每次点餐之后要给客人报以微笑(AOP),维持前后台的独立工作,都安心做自己的事。
借用 itao_o的例子
1.JavaBean类(Model,称为小白菜原料,这里就是Spring给的材料,与数据库中对应)
public class Building {
private String code;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
}
2.用Hibernite把对象持久化到数据库中(Model,还是小白菜,只不过换个说法,你可以给它随便起个名字,比如说实体小白菜,但其实还是一样的东西)
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="Building" table="building"> <id name="id" column="id"> <generator class="uuid"/> </id> <property name="code"/> </class> </hibernate-mapping>
3.把对数据的访问封装成一个面向对象的接口(Model,洗菜,切菜):
public interface BuildingManager { List findEntity(); }
4.控制层的处理(Controller,开始炒菜了):
public class BuildingAction extends Action { public ActionForward execute(ActionMapping actionMapping, ActionForm actionForm, HttpServletRequest req, HttpServletResponse servletResponse) throws Exception { List results = entityManager.findItems(); req.setAttribute("buildings",page); return actionMapping.findForward("list"); } }
5.jsp视图(View,端上桌的油淋小白菜,这里我就不写示例代码了)。
总结以上即为我个人对MVC分层的理解,日后随着我学习的深入,可能会有别的感受,我也会一直保持对博客的更新,下一步的计划为SSM框架的分述与整体架构的搭建。学习框架最重要的事是学会怎么去用,而最根本的是理解框架的思想,我将在博客中记录自己框架搭建的步骤,日后给自己留个备忘,容易捡起来,并且把自己搭建过程中遇到的问题做个随笔,给自己备忘,也让有同样问题的人能找到解决的方法。