• spring boot搭建网站后记之MVC


     MVC设计模式

      第一部分了解了Maven项目文件的基本分布,但是为什么要分成这几个文件?则需要了解Spring MVC的知识。

      Spring MVC是基于MVC的Web框架,那什么是MVC?MVC是一种设计模式。

      设计模式总结日常开发中的经验和编写代码的方法,抽取其中的模式,从而让我们编程更方便。 例如,原来使用一个文件开发程序。但是现在改成模型,视图和控制器三个层次进行开发,从而更好地维护和扩展项目。

    B/S系统下的MVC

      图解:

      具体过程:

      1.用户进行request请求,送给控制器Controller。

        Controller的功能是什么?接受用户请求并响应。

      2.控制器不能对request的请求进行处理(因为分层了嘛,如果Controller能处理,那还能叫MVC吗?)。请求模型进行处理。

        模型是什么呢?见过模型飞机吗?别看它小,它能独立运作,而且完全能自己飞行。在MVC中,负责项目中的“数据+ 业务逻辑”部分就是Model(M)。

      3.模型将处理结果返回给Controller,Controller将模型视图给view层进行视图渲染。

        视图渲染是什么意思?将模型数据填充到request域。

      4.Controller给用户进行response响应。

      注意:B/S模型下模型无法将数据直接将数据填充到视图。

    Spring MVC

      Spring MVC是spring框架中的一个模块。在spring框架中的位置如下:

    spring mvc处理逻辑:

      具体过程:

      1.用户发送request请求(url地址)到前端控制器中。

        在spring mvc中,前端控制器相当于mvc中的Controller层次,其名称为DispatchcerServlet。作用是接受请求并响应,相当于转发器。

      2.DispatcherServlet将url地址发送到HandlerMapping处理器映射器。

        为什么出现了一个HandlerMapping?因为用户发送的是url,而不同类的链接应该由不同的模型处理。可以通过HandlerMapping找到具体的模型进行处理。    

         HandlerMapping。通过xml配置,注解查找Handler。

           Handler是什么?Handler是处理器,处理器相当于模型(M),Handler有多种。

      3.HandlerMapping返回一个执行链HandlerExecutionChain对象给DispatcherServlet。

        HandlerExecutionChain对象里面包含具体的Handler信息。  

      4.DispatcherServlet拿到HandlerExcutionChain对象,将其发送给HandlerAdapter处理适配器。

        处理器适配器:也是一种设计模式,它可以调用不同的Handler。例如:变压器。提供的电压一样,经过变压器之后,可以转成220v,300v电压。

      5.HandlerAdapter执行具体的Handler。

        按照HandlerAdapter的规则执行Handler。因此,编写Handler时,要参照HandlerAdapter规范。

        Handler是后端控制器,叫做Handle处理器,常称为Controller。在MVC中相当于model。

      6.Handler处理器处理后,返回ModelAndView对象(模型和视图的结合体)给HandlerAdapter。

        ModelAndView是spring mvc框架底层对象,包括model和view数据。

      7.HandlerAdapter返回ModelAndView到DispatcherServlet。

      8.DispatcherServlet将ModelAndView对象发送给视图解析器,请求进行视图解析。

        根据逻辑视图名解析成真正的视图。

      9.视图解析器返回view给DispatcherServlet。

        view是视图(包含jsp,fremaker,excel,pdf...)。它是一个接口,实现类支持不同的view类型。

      10.DispatcherServlet请求进行视图渲染。

        视图渲染将模型数据(在ModelAndView对象中)填充到request域。

      11.DispatcherServlet给用户reponse响应结果。

    总结:

      1.前端控制器DispatchServlet几乎与每个组件都有信息传递,因此它非常重要,相当于中央处理器。有了它,减少了其他组件的耦合性。

      2.spring mvc里面有两处体现了可扩展性。  

        2.1.一种是HandlerAdapter管理不同的Handler,因此Handler的增加不会导致其他地方改动。

        2.2.另一种是视图解析器。它可以解析不同的视图,就算视图增加,其他地方也不需要改动。

      3.需要程序员开发的是jsp视图和handler处理器。

        

     注意:图不全可以缩小页面。

    参考资料:传送门

  • 相关阅读:
    洛谷 1498 南蛮图腾——模拟
    bzoj 4198 [Noi2015]荷马史诗——哈夫曼树
    bzoj 1026 [SCOI2009]windy数——数位dp水题
    bzoj 1045 [HAOI2008] 糖果传递——设变量推式子
    bzoj 4521 [Cqoi2016]手机号码——数位dp
    bzoj1044 [HAOI2008]木棍分割——前缀和优化DP
    bzoj1090 [SCOI2003]字符串折叠——区间DP
    bzoj1911 [Apio2010]特别行动队——斜率优化DP
    bzoj1025 [SCOI2009]游戏——因数DP
    bzoj1207 [HNOI2004]打鼹鼠——LIS
  • 原文地址:https://www.cnblogs.com/yulianggo/p/10448945.html
Copyright © 2020-2023  润新知