简介springMVC的工作流程:
在web.xml中部署DispaterServlet,并配置springmvc.xml等文件;
将映射文件请求到处理器HandlerMapping;
HandlerMapping会把请求映射为HandlerExecutionChain类型的handler对象;
将handler对象作为参数传递给HandlerAdapter的实例化对象,调用其handler方法会生成一个ModelAndView对象;
通过ViewResolver视图解析器,将上一步骤中生成的ModelAndView解析为View;
DispatcherServlet根据获取到View,将视图返回给用户。
(一)DispaterServlet简单分析
protected void doDispatch(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpServletRequest processedRequest = request;
//**处理器执行链由处理器对象和拦截器组成。(特别注意 拦截器相关执行都在此类中执行)**
HandlerExecutionChain mappedHandler = null;
boolean multipartRequestParsed = false;
WebAsyncManager asyncManager = WebAsyncUtils.getAsyncManager(request);
try {
ModelAndView mv = null;
Exception dispatchException = null;
try {
processedRequest = checkMultipart(request);
multipartRequestParsed = (processedRequest != request);
// Determine handler for the current request. 获取请求的处理器
mappedHandler = getHandler(processedRequest);
if (mappedHandler == null || mappedHandler.getHandler() == null) {
noHandlerFound(processedRequest, response);
return;
}
// Determine handler adapter for the current request.
HandlerAdapter ha = getHandlerAdapter(mappedHandler.getHandler());
// Process last-modified header, if supported by the handler.
String method = request.getMethod();
boolean isGet = "GET".equals(method);
if (isGe

本文介绍了SpringMVC的工作流程,从web.xml的DispatcherServlet配置开始,详细阐述HandlerMapping如何将请求映射为HandlerExecutionChain,然后通过HandlerAdapter调用处理方法生成ModelAndView,接着ViewResolver解析视图并返回给用户。重点分析了DispaterServlet中的doDispatch方法和HandlerExecutionChain在处理请求过程中的作用,揭示了HandlerMapping与HandlerExecutionChain的紧密关系。
最低0.47元/天 解锁文章
408

被折叠的 条评论
为什么被折叠?



