MVC模式在java web和框架中的实现

前言

 

MVC设计模式在初学java web时就说过了,但是脱离代码去解释设计模式会显得很空。

Jsp中java代码和HTML共存,Sun公司提供了两种jsp model(jsp开发模型):jsp model1和jsp model2。

简而言之,jsp model1使用jsp+java bean的技术,jsp负责显示页面和流程控制,java bean负责封装数据和业务逻辑。

而jsp model2采用jsp+servlet+java bean的技术,jsp model2中,将原model1里的流程控制代码提取到servlet中,从而mvc设计模式在jsp model2中体现出来了,即m对应java bean,v对应jsp,c对应servlet。

注:上面的java bean和平时所说的java bean不太一样,毫无疑问,java bean会提供getter和settter方法获取到class的成员变量,但是jsp model中的java bean不仅做了数据的封装,还包含了一些业务逻辑代码,这就是jsp model中的java bean和我们平常所说的java bean的区别,前者的业务逻辑代码是写在java bean中的,而平时我们所写的java bean一般是没有业务逻辑代码的。(譬如框架开发时所封装的pojo就只有getter和setter方法(pojo和java bean和ejb的区别值得思考))

 

           讨论mvc模式在ssm框架中的实现,我们需要先去说明mvc设计模式和三层架构的概念。

 

Mvc设计模式

M Model,主要负责处理业务逻辑以及数据封装

V View,主要负责显示数据(将数据发给用户)和提交数据 (将用户请求发给服务器)

C Controller,主要是用于辅助捕获请求并控制请求转发。

 

三层架构

区分层次的目的是为了高内聚,低耦合。包括

用户界面层/表示层(User Interface

业务逻辑层(Business Logic Layer

数据访问层(Data Acess Layer)。

 

根据两者的概念可知,两者并不相同。三层架构是一种宏观的概念,而 MVC 就是一种比较具体的实现。它们可以同时存在,也可根据情况使用其中一种。之所以我们会混淆,是因为在进行web开发时两者会同时使用。

 

毫无疑问,Ssm采用三层架构达成了高内聚,低耦合的目的, spring负责业务逻辑层,mybatis负责数据访问层,springmvc负责用户界面层,

Ssm架构中主要有四个packageDAOServiceControllerPojo,这四个package很难和三层架构产生一一对应的关系,因为spring的依赖注入(即DI,就是@autowire注解)在ServiceController都有体现。

 

mvc设计模式在ssm框架中是如何体现的呢?我们需要考虑的不是mvc模式如何由SSM框架实现,而应该考虑mvc模式如何由SpringMVC实现。

 

Spring MVC框架与MVC架构模式联系在于:

  SpringMVC中并没有涉及有关于Controller接口规范的实现,SpringMVC是通过调用Handler来实现Controller这一层的。

  SpringMVC使用了适配器模式,前端控制器使用HandlerAdapter来调用不同的Controller,然后才是Controller调用Model产生数据模型; 
  产生的数据模型将会再次返回到前端控制器,并由前端控制器决定使用不同的模板引擎将页面进行渲染。

你可能感兴趣的:(java,web,java,mvc,spring,web)