Spring MVC工作机制

  • 什么是MVC?
    • MVC(Model View Controller)是一种软件设计的框架模式,它采用模型(Model)—视图(View)—控制器(Controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面。简单来说就是把数据处理、数据展示(界面)和程序/用户得到交互三者分离开的一种编程模式。
    • MVC架构模式是一种复合模式,MVC的三个核心部件分别是
      • Model(模型):所有的用户数据、状态以及程序逻辑,独立于视图和控制器
      • View(视图):呈现模式,类似于Web程序中的界面,视图会从模型中拿到需要展示的状态以及数据,对于相同的数据可以有多种不同的显示形式。
      • Controller(控制器):负责获取用户的输入信息,进行解析并反馈给模型,通常情况下一个视图只有一个模型。
  • 为什么要使用MVC
    • 程序通过M(Model)和V(View)的代码分离,实现了前后端代码的分离,有以下好处
      • 可以使同一个程序使用不同的展现形式。
      • 因为模型是独立于视图的,所以模型可以复用,模型可以独立的移植到别的地方继续使用
      • 前后端的代码分离,使项目开发的分工更加明确,程序的测试更加简便,提高开发效率。
    • MVC模型图
    • 其实控制器的功能类似于一个中转站,会决定调用哪个模型去处理用户请求以及调用那个视图呈现给用户。
  • JavaWeb中MVC模式的应用
    • V:View视图,Web程序中指用户可以看到的并可以与之进行数据交互的界面,比如一个html网页界面或者某些客户端的界面
    • M:Model模型,进行所有数据的处理工作,模型返回的数据时中立的,和数据格式无关。
    • C:Controller控制器,负责接受用户的输入,并且调用模型和视图去完成用户的需求。
  • Web程序中MVC模式的优点
    • 耦合性低:视图和业务层分离,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型即可,不会影响到控制器与视图。
    • 部署快,成本低:MVC是开发和维护用户接口的技术含量降低。使用MVC模式是开发时间得到相当大的缩减。
    • 可维护性高:分离视图和业务逻辑层也使得WEB应用更易于维护和修改。
  • Web程序中MVC模式的缺点
    • 调试困难:因为模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难,每个构件在使用之前都需要经过彻底的测试
    • 不适合中小型规模的应用程序:在一个中小型的应用程序中,强制的使用MVC进行开发,会花费大量时间,并且不能提现MVC的优势。
    • 增加系统结构和实现的复杂性:对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,回增加系统的复杂性,并可能产生更多的更新操作
    • 视图与控制器之间的过于紧密的连接并且降低了视图对模型数据的访问。
  • Spring MVC框
    • Spring MVC采用了松散耦合的可拔插组件结构,比其它的MVC框架具有灵活性和扩展性,Spring MVC通过使用一套注解,使一个Java类成为前端控制器,不需要实现任何接口,同时Spring MVC支持restful形式的URL请求,除此之外Spring MVC在数据绑定、视图解析、本地化处理及静态资源处理上有很大支持。
    • Spring MVC围绕DispatcherServlet(前端控制器)为中心展开,DispatcherServlet(前端控制器)是Spring MVC的中枢,和MVC的思想一样,他负责从视图获取用户请求并且分配给相应的处理器处理,并决定使用哪个视图去把数据呈现给用户。
    • Spring MVC特点
      • 让我们能非常简单的设计出干净的Web层和薄薄的Web层
      • 进行更为简单的Web层开发
      • 天生与Spring框架继承(如IOC容器、AOP等)
      • 提供强大的约定大于配置的配置的契约编程支撑
      • 能简单的进行Web层的单元测试
      • 支持灵活的URL到页面控制器的映射
      • 非常容易与其他视图技术集成。
      • 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API
      • 提供一套强大的JSP标签库,简化JSP开发
      • 支持restful风格
    • Spring MVC请求响应
      • 用户向服务器发送请求,请求被Spring前端控制Servlet DispatcherServlet捕获。
      • DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获取该Handler配置的所有相关的对象。
      • DispatcherServlet根据获取的Handler,选择一个合适的HandlerAdapter。
      • 提取Request中的模型数据,填充Handler入参,开始执行Handler。在填充入参过程中,根据你的配置,Spring将帮你做一些额外的工作。
      • Handler执行完后,向DispatcherServlet返回ModelAndView对象。
      • 根据返回的ModelAndView,选择一个适合的ViewResolver。
      • ViewResolver结合Model和View,来渲染视图。
      • 将渲染结果返回给客户端。

猜你喜欢

转载自www.cnblogs.com/lynn16/p/10691217.html
今日推荐