• SpringMVC笔记


    SpringMVC框架原理:前端控制器、处理器映射器、处理器适配器、视图解析器

    什么是SpringMVC:SpringMVC是spring框架的一个模块,SpringMVC和spring无需通过中间整合层进行整合。SpringMVC是一个基于MVC的web框架。

    什么是MVC:MVC是一种设计模式,M(Model模型)、V(View视图)、C(Controller控制器)

    C接收request请求,请求M进行处理,M处理后返回数据到C,C再通过V进行视图渲染(v把模型数据填充到request域)后响应用户请求。BS系统下模型无法把数据填充到视图,需要通过控制器。

    SpringMVC框架执行流程:

     一、发起请求到前端控制器(DispatcherServlet)

    二、前端控制器请求HandlerMapping,查找Handler(Controller)。可以根据xml配置、注解进行查找。

    三、处理器映射器HandlerMapping向前端控制器返回Handler(Controller)

    四、前端控制器调用处理器适配器去执行Handler(Controller)

    五、处理器适配器去执行Handler(Controller)

    六、Handler(Controller)执行完成给适配器返回ModelAndView

    七、处理器适配器向前端控制器返回ModelAndView,ModelAndView是SpringMVC框架的一个底层对象,包括Model和View。

    八、前端控制器请求视图解析器去进行视图解析,根据逻辑视图名解析成真正的视图,如jsp。

    九、视图解析器向前端控制器返回View

    十、前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域。

    十一、前端控制器向用户响应结果

    组件:

    1、前端控制器DispatcherServlet

    作用:接受请求、响应结果,相当于转发器。

    2、处理器映射器HandlerMapping

    作用:根据请求的url查找Handler

    3、处理器适配器HandlerAdapter

    作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

    4、处理器Handler

    注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以正确执行Handler。

    5、视图解析器View Resolver

    作用:进行视图解析,根据逻辑视图名解析成真正的视图(View)

    6、视图View

    View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

     前端控制器配置:

    不配置以上映射器、适配器、视图解析器等组件,也可以正常运行。

    因为前端控制器从DispatcherServlet.properties文件中加载处理映射器、适配器、视图解析器等组件,如果不在springmvc.xml中配置,就使用默认加载的。

    spring3.1之前使用DefaultAnnotationHandlerMapping注解映射器(如果不在springmvc.xml中配置,也使用这个), spring3.1之后使用RequestMappingHandlerMapping注解映射器。

     spring3.1之前使用AnnotationMethodHandlerAdapter注解适配器(如果不在springmvc.xml中配置,也使用这个), spring3.1之后使用RequestMappingHandlerAdapter注解适配器。

    非注解的处理器映射器配置、handler(controller)配置、处理器适配器配置、视图解析器配置:

    多个映射器可以并存(如上图中的1/2/3),前端控制器判断URL能让哪些映射器映射,就让正确的映射器处理。

    多个适配器也可以并存

    注解的处理器映射器和适配器:

     注解的映射器和注解的适配器必须配对使用

    在spring容器中加载Handler(Controller)

    视图解析器配置前缀和后缀

    controller(handler)中的视图指定写法

    xml中视图解析器的前缀后缀配置

     处理器映射器和处理器适配器总结

    代替这两个配置:

    SpringMVC和myBatis的系统架构


    SpringMVC和mybatis的整合思路

    配置文件

     

    mybatis逆向工程生成PO类和mapper(单表的增删改查)

    自定义mapper,包装对象是为了各层都能很好的获取PO的值;

    扩展对象类是因为PO是逆向工程自动生成的,为了更好的扩展才定义的。

    resultType应该是扩展对象,parameterType应该是包装对象。

  • 相关阅读:
    05 . Python入门值循环语句
    04 . kubernetes资源清单YAML入门
    04 . Python入门之条件语句
    03 . Python入门之运算符
    05 . k8s实战之部署PHP/JAVA网站
    02 . Python之数据类型
    01 . Python简介
    04 . Mysql主从复制和Mycat读写分离
    03 . MysSQL权限和备份
    02 . Mysql基础操作及增删改查
  • 原文地址:https://www.cnblogs.com/ywy8/p/8514972.html
Copyright © 2020-2023  润新知