- 浏览: 49903 次
- 性别:
文章分类
最新评论
SpringMVC 流程图
DispatcherServlet的web.xml配置
DispatcherServlet代码处理中心
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); } } } }
发表评论
-
java 之sftp实现
2018-03-31 17:41 616上周进行了linux环境下sftp的配置和用户权限的创建:ht ... -
java webService之CXF的使用
2018-03-29 14:25 389使用场景:华为VOD系统与媒资系统的接口,资产数据(元数据XM ... -
java 中jstat的用法
2018-03-20 18:06 674JDK自带VM分析工具jps,jstat,jmap,jcons ... -
javaEE性能优化
2018-03-20 16:41 463性能的优化一般可以从多方面入手,前端资源,java程序,数据传 ... -
jvm gc日志检查
2018-03-20 15:08 332JVM的GC日志的主要参数包括如下几个: -XX:+Pr ... -
负载均衡的几种原理
2018-03-19 16:05 435什么是负载均衡? 就 ... -
基于TCP协议实现RPC
2018-03-19 11:28 668RPC的全称:Remote Process Call,即远程过 ... -
java 多线程
2018-03-16 13:29 317Java 多线程编程 Java 给 ... -
Java中BIO、NIO、AIO的原理及其区别
2018-03-12 17:34 611IO的处理方式通常分为 ... -
基于Spring 自定义标签实现
2017-11-30 09:26 489一、源码分析: Spring标签的定义分为默认标签和自定义 ... -
java二维码的生成和解析
2017-09-26 11:15 396一、本文目的: 为了研究对支付宝和微信支付的统一路口管理 ... -
spring-data-redis
2017-09-18 11:54 697Spring-data-redis使用 1、maven依赖 ... -
java,redis
2017-09-18 11:32 321Redis 简介 Redis 是完全开源免费的,遵守BSD协议 ... -
Java xml与实体Bean的转换
2017-09-05 15:24 6381、pom.xml依赖包: <dependenc ... -
Java JVM虚拟机知识要点
2017-08-30 10:25 5661、JVM虚拟机图解: ... -
java 上传小于占用空间为4k的jpg图片异常问题处理
2017-07-19 18:02 493javaWeb上传图片 jpg占用空间为4k时,Commons ... -
Springmvc 注入字符串与时间格式的转换
2017-03-24 11:10 1146以下列出两种spring支持的时间转换 -、方式一 1、 ... -
linux下修改war包
2017-03-06 15:32 1035Linux上修改war包上的文件 www.MyExceptio ... -
itellij idea 11.1.3 mybatis 自动构建代码
2016-11-16 09:50 402步骤一: 1、在工程中pom.xml加添 <buil ... -
intellij idea 下resin容器远程调试
2016-11-16 09:27 5305resin远程调试(我使用的是resin-4.0.41版本): ...
相关推荐
springmvc执行流程图,图片下载,一看就会,面试必备
SpringMVC执行流程 SpringMVC概述 Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC架构,从而在使用...
流程图,讲述了springMVC执行流程
主要介绍了SpringMVC的执行流程及组件详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
用于创建SSM项目的初始文件,内部包含springmvc执行流程图
主要给大家介绍了关于SpringMVC的执行过程的相关资料,文中通过图文介绍的非常详细,对大家的学习或者使用SpringMVC具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。 简要分析执行流程 ## 1.DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。...
中央处理单元 (CPU):作为计算机的大脑,负责执行指令、进行逻辑运算和数据处理。 内存:包括随机访问内存 (RAM) 和只读存储器 (ROM),用于临时或永久地存储程序和数据供CPU快速访问。 存储设备:如硬盘、固态...
流程 1、用户发送请求到前端控制器(DispatcherServlet)。 2、前端控制器请求处理器映射器(HandlerMapping)去查找处理器(Handler)。 3、找到以后处理器映射器(HandlerMappering)向前端控制器返回执行链...
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 代码生成:前后端代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js) ,并生成菜单和...
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 代码生成:前后端代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js) ,并生成菜单和...
(主要技术SpringMVC + Spring + Mybatis + Shiro + Bootstrap) 计算机硬件系统: 计算机硬件系统是构成计算机物理实体的所有部件的集合,包括核心组件以及外设。其主要组成部分包括: 中央处理单元 (CPU):作为...
(Spring+SpringMVC+MyBatis+Lucene+Redis+MAVEN) 计算机硬件系统: 计算机硬件系统是构成计算机物理实体的所有部件的集合,包括核心组件以及外设。其主要组成部分包括: 中央处理单元 (CPU):作为计算机的...
spring,springmvc,mybatis(框架) solr(搜索服务),redis(缓存),easyUI(后台系统页面) ### 数据库设计 tb_user用户表(id,username,password,phone,email,created,updated) tb_item商品表(id,title,sell_point,...
定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。代码生成:前后端代码生成(单表、主附表、树表、列表和表单、增删改查云接口、redis高速缓存对接代码、图表统计、地图统计、vue.js) ,并生成菜单和...