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

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

        <servlet>
		<servlet-name>DispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:application.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>DispatcherServlet</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

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

 

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

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

 

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

 

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

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

 

 

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

 

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

 doDispatch 该方法中

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

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

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

ModelAndVie 视图

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

 

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

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值