springMVC-doService()分析

本文深入探讨了SpringMVC中DispatcherServlet的doService()方法,详细阐述了从请求到达DispatcherServlet后的处理流程,包括请求快照的保存、上下文信息共享、Handler对象的获取、HandlerAdapter的选择、请求缓存机制、拦截器的执行以及异常处理等方面,全面揭示了SpringMVC内部工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、request到dispaterServlet

-> doservice( request,response){
    1、保存请求快照
    2、共享上下文信息,本地解析,主题解析等对象给 handler和view对象
    
}
-->doDispatch( request,reponse){
    1、判断request是否是文件上传请求,是则转换成MultipartRequest,
    2、gethandler(request)-- HandlerExecutionChain <--HandlerMapping.getHandler(request)
    3、获取getHandlerApator(handler)  HandlerAdapter<-- HandlerAdapter.support(handler) ,返回支持当前handler的        handleradapter
    4、判断是否是get或者head请求。根据lasdModified(request)判断请求是否改变,没有发生改变则不再继续请求,而是告诉浏览器       继续使用上次的缓存结果。
    5、handler.applyPreHandle(),执行前置拦截器中的方法。
    6、handlerAdaptar.hand()--handlerInternal(request,response,handler)--设置session信息--同步或异步执行invokeHandleMethod(request, response, handlerMethod)--返回modelandview对象。
    7、当modelandview不等空且viewname为空时根据request设置默认的viewname
    8、handler.applyPosthandle() ,执行后置拦截器
    9、上述步骤发生异常的话就捕获交给 dispatchException来处理。
    10、执行 processDispatchResult(),根据相应的viewname返回到客户端{
        1、处理异常
        2、modelandview不为空则,执行render()方法,渲染视图--view.render()--renderMergedOutputModel()[jsp默认的视图是InternaleResourceView]
    }


}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值