SpringMVC相关知识

一、SpringMVC的实现思想

在这里插入图片描述

二、SpringMVC处理请求流程

HandlerMapping:IOC容器一启动就要去生成bean对象,每扫描一个Controller对象,就会扫描里面的RequestMapping,看这个Controller对象能处理什么请求,扫描到了就保存在handlerMap中。下次请求过来的时候直接看遍历这个map里面找到可以处理这个请求的处理器,然后进行对应的操作
在这里插入图片描述

  1. 浏览器向服务器发送请求,服务器接受到请求以后,由Dispatcher进行处理;
  2. 遍历HandlerMapping,里面保存了RequestMapping和handler的映射规则;
  3. 看当前HandlerMapping里面是否可以处理当前请求,如果可以找到对应的HandlerAdapter;如果不可以,继续遍历下一个HandlerMapping(这里可以进行SpringBoot的扩展,可以自定义HandlerMapping)
  4. 找到了以后,使用HandlerAdapter来执行目标方法,处理浏览器的请求
    在这里插入图片描述
    这里对map中所有的HandlerMapping进行遍历,类似于设计模式中的责任链模式

在这里插入图片描述

三、支持Rest风格的URL请求,使用HiddenHttpMethodFilter

  • 浏览器form表单只支持GET和POST方法,而不支持DELETE、PUT等方法,但是SringMVC支持Rest风格的URL请求,但是在编写form表单的时候POST、DELETE和PUT的method=POST,如下图所示:

在这里插入图片描述

  • 这里的name必须是指定的"_method",但是可以自定义,Spring里面和SpringBoot里面都可以自定义name。
  • 源码如下所示,先获得_method里面的值,判断当前的请求是否是post请求,如果都符合条件,那么就会使用装饰器模式,来对原来的方法进行包装,把request和method一起包装成为一个HttpServletRequest请求。

在这里插入图片描述

四、自定义类型转换器

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值