`

SpringMVC执行流程图

    博客分类:
  • java
阅读更多
SpringMVC 流程图

DispatcherServlet的web.xml配置
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>
        classpath:spring/spring-mvc.xml
      </param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
    <url-pattern>*.json</url-pattern>
    <url-pattern>*.xml</url-pattern>
    <url-pattern>*.m3u8</url-pattern>
    <url-pattern>download</url-pattern>
  </servlet-mapping>

DispatcherServlet代码处理中心
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 (isGet || "HEAD".equals(method)) {
					long lastModified = ha.getLastModified(request, mappedHandler.getHandler());
					if (logger.isDebugEnabled()) {
						logger.debug("Last-Modified value for [" + getRequestUri(request) + "] is: " + lastModified);
					}
					if (new ServletWebRequest(request, response).checkNotModified(lastModified) && isGet) {
						return;
					}
				}

				if (!mappedHandler.applyPreHandle(processedRequest, response)) {
					return;
				}

				// Actually invoke the handler.
				mv = ha.handle(processedRequest, response, mappedHandler.getHandler());

				if (asyncManager.isConcurrentHandlingStarted()) {
					return;
				}

				applyDefaultViewName(request, mv);
				mappedHandler.applyPostHandle(processedRequest, response, mv);
			}
			catch (Exception ex) {
				dispatchException = ex;
			}
			processDispatchResult(processedRequest, response, mappedHandler, mv, dispatchException);
		}
		catch (Exception ex) {
			triggerAfterCompletion(processedRequest, response, mappedHandler, ex);
		}
		catch (Error err) {
			triggerAfterCompletionWithError(processedRequest, response, mappedHandler, err);
		}
		finally {
			if (asyncManager.isConcurrentHandlingStarted()) {
				// Instead of postHandle and afterCompletion
				if (mappedHandler != null) {
					mappedHandler.applyAfterConcurrentHandlingStarted(processedRequest, response);
				}
			}
			else {
				// Clean up any resources used by a multipart request.
				if (multipartRequestParsed) {
					cleanupMultipart(processedRequest);
				}
			}
		}
	}
  • 大小: 491.1 KB
分享到:
评论

相关推荐

    springmvc流程图

    springmvc执行流程图,图片下载,一看就会,面试必备

    spring执行流程图

    流程图,讲述了springMVC执行流程

    SpringMVC学习流程图

    1. 请求处理之前:执行`preHandle`方法,如果返回`true`,则继续处理请求。 2. 请求处理之后,但渲染结果之前:执行`postHandle`方法,此时可以修改响应结果。 3. 请求处理结束后:执行`afterCompletion`方法,用于...

    SpringMVC的执行流程及组件详解

    SpringMVC的执行流程及组件详解 SpringMVC是一个基于Java的Web应用程序框架,它提供了一种灵活的方式来构建Web应用程序。理解SpringMVC的执行流程及组件是开发高质量Web应用程序的关键。本文将对SpringMVC的执行...

    SpringMVC深入总结 核心流程图 中关村北大青鸟网上学堂 docx

    根据给定文件的信息,本文将对SpringMVC框架的核心流程进行深入总结,并通过核心流程图的形式来解析SpringMVC的工作机制。SpringMVC是Spring框架的一部分,它为Web应用程序提供了模型-视图-控制器(Model-View-...

    spring的初始文件

    描述中提到的“springmvc执行流程图”则是一个可视化工具,帮助开发者理解SpringMVC框架的工作原理,从请求到达服务器到响应返回客户端的整个过程。 Spring框架是Java企业级应用开发的重要工具,它提供了依赖注入...

    Springmvc的运行流程图文详解

    Springmvc的运行流程图文详解是指在Springmvc框架中,请求是如何被处理和执行的。下面将对Springmvc的运行流程进行详细的解释。 首先,在浏览器端发送请求到服务器端时,第一个步骤是检查当前的请求在...

    springMVC笔记详细流程图思维导图

    通过SpringMVC的详细流程图和思维导图,我们可以直观地了解整个处理过程,有助于在实际开发中快速定位问题和优化代码。SpringMVC的设计使得开发者能够专注于业务逻辑,而不用过多关心底层的HTTP请求处理,极大地提高...

    SpringMVC框架架构介绍

    以下是SpringMVC框架的一些核心概念和流程的详细解释: 一、Spring MVC的核心类与接口: 1. DispatcherServlet:它是Spring MVC的前端控制器,负责接收HTTP请求并将其转发给适当的处理器。 2. HandlerMapping:此...

    SpringMVC+运行流程解析

    为了更形象地理解SpringMVC的工作流程,文档中提到的UML时序图是一个很好的辅助工具。时序图能够清晰地展示出各个组件之间交互的顺序,以及交互中传递的数据。通过时序图,开发者可以更直观地理解系统的行为。 需要...

    SSM(Spring+SpringMvc+Mybatis)图片上传保存到数据库与回显+sql

    总结来说,这个项目实例了SSM框架下图片上传和回显的完整流程,涉及前后端交互、文件操作、数据库操作和安全防护等多个方面,对于理解SSM框架的应用和Web开发中的文件上传有很好的实践意义。通过学习和实践这个案例...

    Java SpringMVC 学习路线.pdf

    随后,通过启动项目并使用浏览器测试,来查看代码执行流程。 在学习SpringMVC的实践中,完成商品列表的加载是一个重要的环节。这个过程包括创建商品列表页面、创建Item的JavaBean类(POJO)、编写ItemController类...

    一步一步手绘springMVC运行时序图.rar

    Spring MVC 是一个基于 Java 的轻量级 Web 开发...这份资料"2019-04-03_一步一步手绘springMVC运行时序图"应该是详细描绘了Spring MVC运行时的步骤和组件之间的交互,对于理解和学习Spring MVC的运行机制非常有帮助。

    springmvc学习第一天

    入门程序是理解SpringMVC工作原理的重要途径,主要目的是熟悉SpringMVC的基本流程及其各个组件的作用。 - **非注解的处理器映射器和处理器适配器**:这是SpringMVC早期版本中使用的方法,主要用于没有使用注解的...

    springmvc+mybatis+activti+mysql

    它提供了一个图形化的流程设计工具,开发者可以通过拖放方式创建流程图,并将其转换为可执行的流程定义。Activiti还集成了监控、任务管理和API,使得流程的运行状态可以被轻松跟踪和控制。 整合Spring MVC、MyBatis...

    SpringMVC拦截器配置及运行流程解析

    SpringMVC拦截器配置及运行流程解析 SpringMVC拦截器是指在SpringMVC框架中,用于拦截和处理请求的组件。拦截器可以在请求处理之前、之后或抛出异常时执行某些操作,例如身份验证、日志记录、异常处理等。SpringMVC...

    图书管理系统SpringMvc+mybatis

    理解并掌握SpringMvc的控制流程、Mybatis的SQL映射以及它们之间的协同工作原理,对于提升Java Web开发能力具有重要意义。在实际项目中,这样的系统设计模式可以灵活应用于各种业务场景,为企业的信息化建设提供强大...

    SpringMVC学习分享.pptx

    SpringMVC请求流程可以分为以下几个阶段: 1. 客户端发送请求:客户端发送HTTP请求到服务器。 2. DispatcherServlet处理请求:DispatcherServlet将请求委托给对应的处理器(Controller)进行处理。 3. 处理器处理...

    SpringMVC学习课堂笔记

    ### SpringMVC学习课堂笔记知识点总结 #### 一、SpringMVC基础知识 ##### 1.1 什么是SpringMVC? SpringMVC是Spring框架的一部分,主要用于构建Web应用程序。它遵循了MVC(Model-View-Controller)设计模式,提供...

    SSM(spring+SpringMVC+Mybatis)框架实现增删改查

    Mybatis的Executor执行SQL并处理结果集,再由Mybatis-Spring的MapperScannerConfigurer扫描指定包下的Mapper接口,自动注入到Spring容器中。 4. **增删改查实现**: - **增加(Insert)**:在Service层中定义增加...

Global site tag (gtag.js) - Google Analytics