目录

 

1.学习内容

2.一般认识SpringMVC

3.SpringMVC重新认识 核心组件

4.Web MVC 注解驱动

@EnableWebMvc模块注解说明

5.自定义组件 : WebMvcConfigurer (Spring Bean)

6.Spring MVC相关的注解

7.WebMVC的自动装配  即使在Spring MVC的时代,我们也可以实现自动装配

8.SpringBoot时代的简化


1.学习内容

springmvc 怎么改成springboot_MVC

Servlet的特点:

springmvc 怎么改成springboot_拦截器_02

springmvc 怎么改成springboot_MVC_03

springmvc 怎么改成springboot_MVC_04

2.一般认识SpringMVC

springmvc 怎么改成springboot_拦截器_05

  

springmvc 怎么改成springboot_自动装配_06

 

springmvc 怎么改成springboot_MVC_07

  

springmvc 怎么改成springboot_拦截器_08

3.SpringMVC重新认识 核心组件

springmvc 怎么改成springboot_MVC_09

 

springmvc 怎么改成springboot_拦截器_10

springmvc 怎么改成springboot_自动装配_11

springmvc 怎么改成springboot_MVC_12

webMVC核心组件

   注意处理器Handler具体指的就是方法。

springmvc 怎么改成springboot_拦截器_13

 我们可以通过读源码发现,这些核心的组件都是在DispatcherServlet里面初始化了的

 

springmvc 怎么改成springboot_MVC_14

随便打开一个初始化的方法:

springmvc 怎么改成springboot_自动装配_15

SpringMVC的交互流程图:

springmvc 怎么改成springboot_自动装配_16

断点调试源码:

DispatcherServlet 的入口方法:

springmvc 怎么改成springboot_自动装配_17

第二步就是通过HandlerMapping选择一个Handler,handlerMappings这里就只有一个满足条件的类,就是我们配置文件里面配置的。

springmvc 怎么改成springboot_MVC_18

springmvc 怎么改成springboot_自动装配_19

选择出的HandMapping是我们配置文件里面配置的RequestMappingHandlerMapping,然后通过RequestMappingHandlerMapping去 choose Handler,   这个Handler上面组件说过是包含

处理器Handler(这里指的就是HelloWorldController 的index方法),和intercepors列表(这里是null,也就是没有注册得有拦截器)

springmvc 怎么改成springboot_MVC_20

springmvc 怎么改成springboot_自动装配_21

接着进入第三步,进入到handlerAdapter, 这里加载的也是我们在配置文件里面配置的RequestMappingHandlerAdapter

springmvc 怎么改成springboot_MVC_22

第四步第五步会走程序员自己去实现的逻辑,然后进去=入到第六步,

springmvc 怎么改成springboot_自动装配_23

完了之后就会去渲染页面。

拦截器 过滤器的执行顺序:

4.Web MVC 注解驱动


基本配置步骤


注解配置: @Configuration ( Spring 范式注解 )


组件激活: @EnableWebMvc ( Spring 模块装配)


自定义组件 : WebMvcConfigurer ( Spring Bean )


将配置文件去掉,加上一个配置类,开启MVC功能。

springmvc 怎么改成springboot_拦截器_24

这个时候再启动项目,让他自动装配组件进来,他会装配很多得组件进来。

springmvc 怎么改成springboot_拦截器_25

springmvc 怎么改成springboot_拦截器_26

视图解析器的前缀和后缀还没有配置,所以这里为空的,所以请求会返回404,找不到资源文件。

springmvc 怎么改成springboot_拦截器_27

springmvc 怎么改成springboot_自动装配_28

从xml转换到Bean:

springmvc 怎么改成springboot_自动装配_29

然后就可以找到这个视图解析器,就不会出现404了

springmvc 怎么改成springboot_MVC_30

@EnableWebMvc模块注解说明

  这个注解怎么就把那些组件给注入到DispatcherServlet了呢进去了呢,可以看上一篇博客介绍的走向自动装配

这是通过注解实现的Enable模块装配

springmvc 怎么改成springboot_拦截器_31

springmvc 怎么改成springboot_自动装配_32

springmvc 怎么改成springboot_自动装配_33

通过@EnableWebMvc这个注解就已经把Bean加入到容器中了

然后在这里就加入到了DispatcherServlet了

springmvc 怎么改成springboot_自动装配_34

 

5.自定义组件 : WebMvcConfigurer (Spring Bean)

     WebMvcConfigurer里面就可以加入自定义的组件,比如说拦截器。WebMvcConfigurer有一个默认的实现,但是已经被弃用掉了,因为里面的实现都是空实现,没有意义,会增加类的使用量。

springmvc 怎么改成springboot_自动装配_35

i

实现这个接口:

springmvc 怎么改成springboot_MVC_36

添加拦截器,拦截器在Handle之前执行,我们说过Handle就是Controller里面的方法,所以这个在Controller的方法执行之前执行,

springmvc 怎么改成springboot_拦截器_37

现在需要思考一个问题就是这个拦截器类是如何注入进去的。

@EnableWebMvc注入,required等于false,当这个实现类不存在的时候也是可以接受的。

springmvc 怎么改成springboot_自动装配_38

真正的调用其实在这里

springmvc 怎么改成springboot_拦截器_39

然后就会掉到我们自己实现的拦截器的逻辑

springmvc 怎么改成springboot_拦截器_40

6.Spring MVC相关的注解


注册模型属性: @ModelAttribute


读取请求头: @RequestHeader


读取 Cookie : @CookieValue


校验参数: @Valid 、 @Validated


注解处理: @ExceptionHandler


切面通知: @ControllerAdvice


springmvc 怎么改成springboot_拦截器_41

springmvc 怎么改成springboot_拦截器_42

这样更方便,ModelAttribute方法先处理,handle方法后处理。

springmvc 怎么改成springboot_拦截器_43

springmvc 怎么改成springboot_自动装配_44

springmvc 怎么改成springboot_拦截器_45

springmvc 怎么改成springboot_MVC_46

springmvc 怎么改成springboot_拦截器_47

7.WebMVC的自动装配  即使在Spring MVC的时代,我们也可以实现自动装配

条件:但是我们大多数的人不会用这个裸接口来编程

springmvc 怎么改成springboot_MVC_48

 我们会用Spring的 SPI

    

springmvc 怎么改成springboot_拦截器_49

注释掉:

springmvc 怎么改成springboot_自动装配_50

 

springmvc 怎么改成springboot_MVC_51

springmvc 怎么改成springboot_拦截器_52

8.SpringBoot时代的简化

springmvc 怎么改成springboot_拦截器_53