Spring MVC 框架

MVC 模式

        MVC是指Model-View-Controller(模型-视图-控制器)模式,是开发Web应用程序时常用的一种代码分层方式。

MVC设计模式

     

        这种架构模式就是典型的 MVC 设计模式,它是软件工程中的一种架构模式,会强制性地把系统的输入、处理和输出分开,使系统从功能上形成 Model-View-Controller 三个基本部分

视图(View):负责格式化数据并把它们呈现给用户,包括数据展示、数据验证、界面设计等功能。对应组件:JSP或 HTML文件。

控制器(Controller);负责接收并转发请求,对请求进行处理后指派视图并将响应结果发送给客户端。对应组件:Servlet。

模型(Model):模型对象拥有最多的处理任务,是应用程序的主体部分,它负责业务逻辑的处理和实现对数据的操作。对应组件:JavaBean(包括处理业务逻辑的Service 层、与数据库操作相关的 DAO 层及贯穿于各层之间的数据模型 POJO)

        上面 JSP+ServlettJavaBean 的模式就是最典型的 MVC 模式,在这种模式下,应用程序中每个层级的代码各司其职,结构非常清晰,如图所示:

        控制器由Senvlet担任,接收前端请求并调用JavaBean,相当于一个工作调度人员。JavaBean 实现了模型的功能,处理业务并操作数据库。视图由JSP 实现,负责将处理结果响应到浏览器呈现给用户。

MVC 结构流程图如下:

        上图阐述了 MVC 模式三个部分(模型、视图、控制器)的功能职责,并对各部分之间的调用关系进行了描述,从中可以分析出 MVC整体的处理过程如下:                                                              (1) 视图提供系统与用户交互的界面,并发送用户输入的请求给控制器,
(2) 控制器接收用户的请求,并决定应该调用的模型。                                                                    (3) 模型根据用户请求进行相应的业务逻辑处理,并返回处理结果(数据)                                      (4) 控制器根据返回的处理结构,调用相应的视图格式化模型返回的数据,并通过视图呈现给用户。

        通过 MVC 设计模式可打造出一个松耦合+高重用性+高可适用性的完美架构,这也是架构设计的目标之一。不过任何一件事都会看利有弊,下面就来总结下 MVC 的优缺点:

优点:

  • MVC 三个模块相互独立,松耦合架构。
  • 多视图共享一个模型,大大提高代码的可重用性。
  • 控制器提高了应用程序的灵活性和可配置性。
  • 有利于软件工程化管理。

缺点:

  • 增加了系统结构和实现的复杂性,不适合小型规模的项目。
  • 层与模型之间需要控制器做中间的连接控制,所以效率较低。花费大量时间将 MVC 应用到小规模的应用程序通常得不偿失,所以项目架构的设计模式要根据具体的应用场景来决定。

第一个 Spring MVC 程序

        Spring MVC 框架是 Spring 框架提供的一个基于 MVC模式设计的 Web 层框架。Spring MVC 框架是基于 Servlet 实现的,包含 Modet模型对象、视图解析器、Controller控制器等重要组件,实现了 JSP Model2 的模型,其简易结构图如图下所示。

        Spring MVC 框架用 Controller 替换 JSP Model2 模型中的 Servlet,实现控制器的功能,Controller 收到请求后,完成业务处理并用 Model 模型对象存储处理结果,Controller 再调用相应的视图解析器 View 对处理结果进行视图渲染,最终客户端得到响应消息。

        SpringMVC框架的结构较为复杂,上述只是对其框架结构的一个简单介绍。下面通过搭建Spring MVC环境,并实现一个简单的例子体验 Spring MVC的用法,从而更深入地了解 SpringMVc架构模型及请求处理流程。

使用注解开发 Spring MVC 框架

HandlerMapping 意为处理器映射,用于解析前端请求与 Controller 的映射关系。

        随着业务的扩展,需要定义的 Bean 势必越来越多,这种方案显然并不合适,那么该如何解决呢?
        除 BeanNameUrlHandlerMapping 映射器外,Spring框架还提供了多种处理器映射器的支持
如:

  • org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
  • org.springframework.web.servlet,mvc.annotation.DefaultAnnotationHandlerMapping
  • org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping 等。

        开发人员可以根据需求选择合适的处理器映射。最常用的解决方案是使用 Sprin MVC 框架提供的一键式配置方法<mvc:annotation-driven/>,通过注解的方式进行开发。

注意:

ModelAndView 代表 Spring MVC 框架中呈现视图界面时所使用的 Model(模型对象)和View(逻辑视图名称)。因为 Java 一次只能返回一个对象,所以 ModelAndView 的作用就是封装这两个对象,以方便一次性返回所需的 Model 和 View。当然,返回的模型和视图也都是可选的,在一些情况下,模型中没有任何数据,那么只返回视图即可(如上述示例),或只返回模型,让 Spring MVC框架根据请求 URL 来决定视图。后续章节会对 ModelAndview对象进行更详尽的学习。

Spring MVC 框架梳理

Spring MVC 框架的核心是前端控制器,可以说绝大部分操作和它有关,请求流程如图下所示:

图上描述了Spring MVC 框架处理用户请求的具体流程:

(1)客户端发送的请求被前端控制器(Dispatcherservlet)捕获。                                                        (2)前端控制器调用处理处理器映射(HandlerMapping),对请求信息进行解析。                            (3)前端控制器根据上一步的解析结果,调用具体的 Controller,处理业务                                      (4)业务处理完成之后,返回一个 ModelAndView(模型数据和逻辑视图名)。                                  (5)前端控制器收回控制权,然后根据返回的逻辑视图名选择相应的视图,并把模型数据传入以便视图渲染展示。                                                                                                                              (6)前端控制器将渲染结果返回给客户端,流程结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值