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应该是包装对象。

 

posted @ 2018-03-06 16:15  敲代码的小浪漫  阅读(182)  评论(0编辑  收藏  举报