概述
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直接有联系的.
最后
以上就是沉静翅膀为你收集整理的springmvc原理之DispatcherServlet的全部内容,希望文章能够帮你解决springmvc原理之DispatcherServlet所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复