SSM框架下的请求执行过程源码分析

首先,我们发出的一个请求被传入到 web.xml 中的 DispatchServelt

        
		DispatcherServlet
		org.springframework.web.servlet.DispatcherServlet
		
			contextConfigLocation
			classpath:application.xml
		
		1
	

	
	
		DispatcherServlet
		*.do
	

这个请求被 servlet 捕获,servlet 首先执行的是 service 方法。然而我们在 DispatcherServlet 中发现并没有 service 方法。这时问我们可以看到 DispatcherServlet 继承了 FrameworkServlet 方法

SSM框架下的请求执行过程源码分析_第1张图片

 

我们进入 FrameworkServlet 方法可以找到 service 方法 ,

SSM框架下的请求执行过程源码分析_第2张图片

所以一个请求进入首先执行的是 FrameworkServlet 中的 service 方法 ,进来 service  方法,不为空执行父类的 service 方法,

 

SSM框架下的请求执行过程源码分析_第3张图片

get方法回调执行 doGet 然后此方法会调用会 processRequest 方法

 

SSM框架下的请求执行过程源码分析_第4张图片

该请求会顺序执行至该方法中的 doService 方法,

然而我们发现 FrameworkServlet  中的 doService 方法只是一个抽象方法。

 SSM框架下的请求执行过程源码分析_第5张图片

 

我们再回到 DispatcherServlet  中,发现该抽象方法在其子类中得到了实现。

SSM框架下的请求执行过程源码分析_第6张图片

 

doService 里面将数据放进请求对象中,然后 执行doDispatch 方法

SSM框架下的请求执行过程源码分析_第7张图片

SSM框架下的请求执行过程源码分析_第8张图片

 doDispatch 该方法中

mappedHandler = getHandler(processedRequest);   获得一个处理器链

HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());   获得一个适配器

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());   真正执行handler方法

SSM框架下的请求执行过程源码分析_第9张图片

ModelAndVie 视图

processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);   将目标方法的返回值结果与视图结合,并响应客户端处理结果

 

至此一个请求执行的过程在sevlet中结束

你可能感兴趣的:(SSM框架)