欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JavaWeb】MVC模式和JSP开发模型

程序员文章站 2022-04-02 10:21:37
...

第一节 MVC模式简介

1.1 MVC概念

首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种设计模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller),即为MVC。它是一种软件设计的典范,最早为Trygve Reenskaug提出,为施乐帕罗奥多研究中心(Xerox PARC)的Smalltalk语言发明的一种软件设计模式。

1.2 MVC模式详解

虽然MVC并不是Java当中独有的,但是现在几乎所有的B/S的架构都采用了MVC框架模式。

  • 控制器Controller:控制器即是控制请求的处理逻辑,对请求进行处理,负责请 求转发和重定向;
  • 视图View:视图即是用户看到并与之交互的界面,比如HTML(静态资源),JSP(动态资源)等等。
  • 模型Model:模型代表着一种企业规范,就是业务流程/状态的处理以及业务规则的规定。业务流程的处理过程对其他层来说是不透明的,模型接受的请求,并返回最终的处理结果。业务模型的设计可以说是MVC的核心。

1.3 MVC高级框架应用

MVC模式被广泛用于Java的各种框架中,比如Struts2、spring MVC等等都用到了这种思想。

Struts2是基于MVC的轻量级的web应用框架。基于MVC,说明基于Struts2开发的Web应用自然就能实现MVC,也说明Struts2着力于在MVC的各个部分为我们的开发提供相应帮助。

1.4 MVC和三层架构的区别

同样是架构级别的,相同的地方在于他们都有一个表现层,但是他们不同的地方在于其他的两个层。

在三层架构中没有定义Controller的概念。这是最不同的地方。而MVC也没有把业务的逻辑访问看成两个层,这是采用三层架构或MVC搭建程序最主要的区别。当然了。在三层中也提到了Model,但是三层架构中Model的概念与MVC中Model的概念是不一样的,“三层”中典型的Model层是由业务逻辑与访问数据组成的。而MVC里,则是以实体类构成的。

MVC和三层架构的区别:

MVC:
   M 即Model(模型层),主要负责处理业务逻辑以及数据库的交互

   V 即View(视图层),主要负责显示数据和提交数据

   C 即Controller(控制层),主要是用作辅助捕获请求并控制请求转发

三层:
   UI界面层

   BLL业务逻辑层

   DAL数据访问层

区别:
   1.  三层是基于业务逻辑来分的,而mvc是基于页面来分的
   2.  MVC模式是一种复合设计模式,一种解决方案
       三层是种软件架构,通过接口实现编程
   3.  三层模式是体系结构模式,MVC是设计模式
   4.  三层模式又可归于部署模式,MVC可归于表示模式

第二节 JSP开发模型

2.1 JavaWeb经历两个时期

2.1.1 JSP Model1

JSP Model1是JavaWeb早期的模型,它适合小型Web项目,开发成本低!Model1第一代时期,服务器端只有JSP页面,所有的操作都在JSP页面中,连访问数据库的API也在JSP页面中完成。也就是说,所有的东西都耦合在一起,对后期的维护和扩展极为不利。
【JavaWeb】MVC模式和JSP开发模型

JSP Model1的优化(Model1第二代)

JSP Model1优化后有所改进,把业务逻辑和数据访问的内容放到了JavaBean(狭义JavaBean:实体类,广义JavaBean:实体类,dao,service,工具类)中,而JSP页面负责显示以及请求调度的工作。虽然第二代比第一代好了些,但还让JSP做了过多的工作,JSP中把视图工作和请求调度(控制器)的工作耦合在一起了。

【JavaWeb】MVC模式和JSP开发模型

2.1.2 JSP Model2

JSP Model2模式已经可以清晰的看到MVC完整的结构了。

JSP:视图层,用来与用户打交道。负责接收数据,以及显示数据给用户;

Servlet:控制层,负责找到合适的模型对象来处理业务逻辑,转发到合适的视图;

JavaBean:模型层,完成具体的业务工作,例如:开启、转账等。

【JavaWeb】MVC模式和JSP开发模型

小结:这就是javaweb经历的两个时期,JSP Model2适合多人合作开发大型的Web项目,各司其职,互不干涉,有利于开发中的分工,有利于组件的重用。但是,Web项目的开发难度加大,同时对开发人员的技术要求也提高了。

2.2 基于MVC的三层架构的实现

虽然MVC把程序分成三部分,每个部分负责不同的功能,但是这只是逻辑的分离,实际代码并没有真正分离,特别是Model(包括业务、数据访问和实体类、工具类等)部分的代码,为了增强代码的维护性和降低代码耦合性,需要把代码分层管理,于是就有了三层架构:

分别是:web层(表示|界面层)、service层(业务逻辑层)、dao层(数据访问层)

【JavaWeb】MVC模式和JSP开发模型

web层对应MVC中的Servlet和JSP

其他层都属于MVC中的Model

【JavaWeb】MVC模式和JSP开发模型

案例演示:

 	web层
        com.web.servlet
        jsp页面放在 WebContent 或  WEB-INF
        
    Service层
        com.service  放服务层接口
        com.service.impl  放服务层实现
        
    Dao  层
        com.dao   方法 dao接口
        com.dao.impl  放dao实现
        
    
    实体类  
        com.domain   | com.beans  | com.entity | com.pojo
    
    工具类 
        com.commons  | com.utils
        
相关标签: mvc java