springMVC内部执行流程简析

外部流程围绕着dispatchServlet,那么dispatchServlet内部到底做了什么?

 

①前端通过 ip+端口/lin 访问tomcat服务器上的controller 此时"/lin"就会被dispatchServlet拦截

 

dispatServlet会根据"/lin"去找处理器映射器,处理器映射器则会返回"/lin"指向的controller类以及拦截器执行链给dispatch

拦截器执行链即多个拦截器,这些拦截器之间还存在执行的先后顺序

 

dispatch收到具体的controller后,就会去找处理器适配器,让处理器适配器执行controller里的方法 执行完毕后将modelAndView返回给dispatchServlet

public class MyContr011er implements Controller { 
Override 
(HttpServ1etRequest httpServ1etRequest, 
public ModelAndView 
handlefik•quest 
cÆ.xception { 
HttpS 
// Model : view 3/1/8/ (Æ$ßf•f) 
ModelAndView modelAndView = new ModelAndView() ; 
modelAndView. addObject ( attributeName: "msg", attribute\/alue: 
// success -'j .2-f'/:ff jsp./k/(l/) 
modelAndView. setViewName success") ; 
return modelAndView; 
"hello mvc") ,

 

dispatchServlet拿到modelAndView后,就找到视图解析器,视图解析器会给modelAndViewViewName追加前缀和后缀 然后把路径返回给dispatchServlet

class= org. springframework. web. servlet. view. InternalResourceViewRes01ver 
property name="prefix" 
(property name—-suffix- value—-. 
Obeans

 

dispatchServlet拿到视图解析器拼接的路径后就根据ModelAndView进行jsp渲染,再将渲染好的jsp拿回到dispatchServlet,最后将jsp返回给浏览器,由浏览器进行展示

 

全流程一览:

名字

说明

dispathServlet 中央处理器

与前端页面交互(接收请求和参数),处理分发请求

处理器映射器

返回controller和拦截器执行链

处理器适配器

执行controller里的方法

视图解析器

给字符串凭借前缀和后缀,形成真实路径

 

 
I.localhost: 8080/1in 
dispathServIet 
ıo.X4ğ+35jsp 
8.jğQi#şşğ+35ZE 
7.ModeIAndView 
ModelAnd 
View 
2./IinZJcontroIIer 
• ••••••3jğQcontroIIer ¯ 
interceptl 
intercept2 
intercept3
posted @ 2021-08-31 21:26  夏·舍  阅读(62)  评论(0)    收藏  举报