springmvc原理之DispatcherServlet

DispatcherServlet是springmvc最核心的类,整个处理过程的顶层都在这里.

DispatcherServlet继承自HttpServlet,它也是Http协议的实现.

DispatcherServlet里面执行处理的入口方法是doService,不过doService并没有直接处理,而是交给了doDispatch去处理,在处理前,doService做了一部分事情.先判断请求是不是include请求(要清楚forward和include的区别),如果是include请求,会对request的Attribute做一些快照备份,等doDispatch处理完请求,回复备份.除了做备份之外,还对request进行了一些设置:设置了webapplicontext,themsource,localresolver,themesolver.这四个属性用在handler和view中.除此之外doService还设置了flashmap,lashmapManager.

看一些源码如下:

那么flashMap是做什么的呢?它主要是作为redirect转发时参数的传递.就是我们在handler上面写的参数类型,名称,spring帮我们把参数放到了这个flashMap中,然后放到model中(其实转发输入的属性是存在inputflashMap中,outputflashMap用于转发输出的属性,他们通过ManagerflashMap来管理).这就是doService大概做的事情,下面介绍doDispatch做的事情

doDispatch主要做了四件事情:1.根据request找到handler; 2.根据handler找到handlerAdapter; 3.用handlerAdapter处理handler; 4.调用processDisachResult方法处理上面处理后的结果(包括找到view并渲染输出给客户端):那么handler,handlerAdapter,handlermapping都是什么呢?这是<看透springmvc源码与分析>一书中的介绍:

就是我们一次请求,先是通过handlermapping找到handler,但是handler并没有执行,他通过handlerAdapter来执行他.并且返回modelandview,然后DispatcherServlet把这个modelandview,返回给解析器:

你们看springmvc中的M-model,v-view ,c-controller.其实有两个都是和DispatcherServlet直接有联系的.

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值