Spring源码分析【5】-Spring MVC处理流程

org.apache.catalina.core.ApplicationFilterChain.doFilter

《Spring源码分析【5】-Spring MVC处理流程》

《Spring源码分析【5】-Spring MVC处理流程》

获取Filter

《Spring源码分析【5】-Spring MVC处理流程》

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter

《Spring源码分析【5】-Spring MVC处理流程》

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.filter.DelegatingFilterProxy.doFilter

《Spring源码分析【5】-Spring MVC处理流程》

invokeDelegate

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.security.web.FilterChainProxy.doFilter

《Spring源码分析【5】-Spring MVC处理流程》

doFilterInternal

《Spring源码分析【5】-Spring MVC处理流程》

《Spring源码分析【5】-Spring MVC处理流程》

doFilter

《Spring源码分析【5】-Spring MVC处理流程》

nextFilter

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.filter.OncePerRequestFilter.doFilter

《Spring源码分析【5】-Spring MVC处理流程》

package org.springframework.security.web.context;
public class SecurityContextPersistenceFilter extends GenericFilterBean

SecurityContextPersistenceFilter继承关系GenericFilterBean

《Spring源码分析【5】-Spring MVC处理流程》

下面经过几步之后…

org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter

《Spring源码分析【5】-Spring MVC处理流程》

HttpRequestResponseHolder holder

《Spring源码分析【5】-Spring MVC处理流程》

loadContext

《Spring源码分析【5】-Spring MVC处理流程》

chain.doFilter(holder.getRequest(), holder.getResponse());

《Spring源码分析【5】-Spring MVC处理流程》

经历一系列的过滤器到

javax.servlet.http.HttpServlet.service

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.servlet.FrameworkServlet.service

《Spring源码分析【5】-Spring MVC处理流程》

super.service(request, response);之后回到

javax.servlet.http.HttpServlet.service

《Spring源码分析【5】-Spring MVC处理流程》

doGet

《Spring源码分析【5】-Spring MVC处理流程》

processRequest

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.servlet.DispatcherServlet.doService

《Spring源码分析【5】-Spring MVC处理流程》

doDispatch(request, response);

《Spring源码分析【5】-Spring MVC处理流程》

doDispatch

《Spring源码分析【5】-Spring MVC处理流程》

mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal

《Spring源码分析【5】-Spring MVC处理流程》

invokeHandlerMethod

《Spring源码分析【5】-Spring MVC处理流程》

到invocableMethod.invokeAndHandle(webRequest, mavContainer);

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest

《Spring源码分析【5】-Spring MVC处理流程》

org.springframework.web.method.support.InvocableHandlerMethod.doInvoke

《Spring源码分析【5】-Spring MVC处理流程》

从这里可以看出是利用反射去执行这个类的方法。

返回invokeForRequest

org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest

《Spring源码分析【5】-Spring MVC处理流程》

返回invokeAndHandle

《Spring源码分析【5】-Spring MVC处理流程》

返回invokeHandlerMethod

《Spring源码分析【5】-Spring MVC处理流程》

进入getModelAndView

org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.getModelAndView

《Spring源码分析【5】-Spring MVC处理流程》

返回mav

《Spring源码分析【5】-Spring MVC处理流程》

一直返回mav退到doDispatch

org.springframework.web.servlet.DispatcherServlet.doDispatch

《Spring源码分析【5】-Spring MVC处理流程》

applyDefaultViewName

《Spring源码分析【5】-Spring MVC处理流程》

    原文作者:Spring MVC
    原文地址: https://blog.csdn.net/unix21/article/details/52171647
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞