servlet执行原理图解(java 急求SpringMVC的工作原理的解释和它的流程图)

2026-04-23 15:15:02 0

servlet执行原理图解(java 急求SpringMVC的工作原理的解释和它的流程图)

本篇文章给大家谈谈servlet执行原理图解,以及java 急求SpringMVC的工作原理的解释和它的流程图对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录

java 急求SpringMVC的工作原理的解释和它的流程图

Spring工作流程描述

      1. 用户向服务器发送请求,请求被Spring 前端控制Servelt DispatcherServlet捕获;

      2. DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;

      3. DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)

       4.  提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作:

      HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息

      数据转换:对请求消息进行数据转换。如String转换成Integer、Double等

      数据根式化:对请求消息进行数据格式化。 如将字符串转换成格式化数字或格式化日期等

      数据验证: 验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中

      5.  Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象;

      6.  根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器中的ViewResolver)返回给DispatcherServlet ;

      7. ViewResolver 结合Model和View,来渲染视图

      8. 将渲染结果返回给客户端。

Spring工作流程描述

    为什么Spring只使用一个Servlet(DispatcherServlet)来处理所有请求?

     详细见J2EE设计模式-前端控制模式

    Spring为什么要结合使用HandlerMapping以及HandlerAdapter来处理Handler?

    符合面向对象中的单一职责原则,代码架构清晰,便于维护,最重要的是代码可复用性高。如HandlerAdapter可能会被用于处理多种Handler。

详解Spring mvc工作原理及源码分析

Model 模型层 (javaBean组件 = 领域模型(javaBean) + 业务层 + 持久层)

View 视图层( html、jsp…)

Controller 控制层(委托模型层进行数据处理)

springmvc是一个web层mvc框架,类似struts2。

springmvc是spring的部分,其实就是spring在原有基础上,又提供了web应用的mvc模块。

实现机制:

struts2是基于过滤器实现的。

springmvc是基于servlet实现的。

运行速度:

因为过滤器底层是servlet,所以springmvc的运行速度会稍微比structs2快。

struts2是多例的

springmvc单例的

参数封装:

struts2参数封装是基于属性进行封装。

springmvc是基于方法封装。颗粒度更细。

⑴ 用户发送请求至DispatcherServlet。

⑵ DispatcherServlet收到请求调用HandlerMapping查询具体的Handler。

⑶ HandlerMapping找到具体的处理器(具体配置的是哪个处理器的实现类),生成处理器对象及处理器拦截器(HandlerExcutorChain包含了Handler以及拦截器集合)返回给DispatcherServlet。

⑷ DispatcherServlet接收到HandlerMapping返回的HandlerExcutorChain后,调用HandlerAdapter请求执行具体的Handler(Controller)。

⑸ HandlerAdapter经过适配调用具体的Handler(Controller即后端控制器)。

⑹ Controller执行完成返回ModelAndView(其中包含逻辑视图和数据)给HandlerAdaptor。

⑺ HandlerAdaptor再将ModelAndView返回给DispatcherServlet。

⑻ DispatcherServlet请求视图解析器ViewReslover解析ModelAndView。

⑼ ViewReslover解析后返回具体View(物理视图)到DispatcherServlet。

⑽ DispatcherServlet请求渲染视图(即将模型数据填充至视图中) 根据View进行渲染视图。

⑾ 将渲染后的视图返回给DispatcherServlet。

⑿ DispatcherServlet将响应结果返回给用户。

(1)前端控制器DispatcherServlet(配置即可)

功能:中央处理器,接收请求,自己不做任何处理,而是将请求发送给其他组件进行处理。DispatcherServlet 是整个流程的控制中心。

(2)处理器映射器HandlerMapping(配置即可)

功能:根据DispatcherServlet发送的url请求路径查找Handler

常见的处理器映射器:BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping,

ControllerClassNameHandlerMapping,DefaultAnnotationHandlerMapping(不建议使用)

(3)处理器适配器HandlerAdapter(配置即可)

功能:按照特定规则(HandlerAdapter要求的规则)去执行Handler。

通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展多个适配器对更多类型的处理器进行执行。

常见的处理器适配器:HttpRequestHandlerAdapter,SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter

(4)处理器Handler即Controller(程序猿编写)

功能:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler。

(5)视图解析器ViewReslover(配置即可)

功能:进行视图解析,根据逻辑视图名解析成真正的视图。

ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。

springmvc框架提供了多种View视图类型,如:jstlView、freemarkerView、pdfView...

(6)视图View(程序猿编写)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

引入相关依赖:spring的基本包、springmvc需要的spring-webmvc,日志相关的slf4j-log4j12,jsp相关的jstl、servlet-api、jsp-api。

因为DispatcherServlet本身就是一个Servlet,所以需要在web.xml配置。

一、使用默认加载springmvc配置文件的方式,必须按照以下规范:

①命名规则:-servlet.xml ====》 springmvc-servlet.xml

②路径规则:-servlet.xml必须放在WEB-INF下边

二、如果要不按照默认加载位置,则需要在web.xml中通过标签来指定springmvc配置文件的加载路径,如上图所示。

将自定义的 Controller 处理器配置到 spring 容器中交由 spring 容器来管理,因为这里的 springmvc.xml 配置文件中处理器映射器配置的是 BeanNameUrlHandlerMapping ,根据名字可知这个处理器映射器是根据 bean (自定义Controller) 的 name 属性值url去寻找执行类 Handler(Controller) , 所以bean的name属性值即是要和用户发送的请求路径匹配的 url 。

根据视图解析路径:WEB-INF/jsps/index.jsp

功能:根据bean(自定义Controller)的name属性的url去寻找执行类Controller。

功能:自定义的处理器(Controller)实现了Controller接口时,适配器就会执行Controller的具体方法。

SimpleControllerHandlerAdapter会自动判断自定义的处理器(Controller)是否实现了Controller接口,如果是,它将会自动调用处理器的handleRequest方法。

Controller接口中有一个方法叫handleRequest,也就是处理器方法。

因此,自定义的Controller要想被调用就必须实现Controller接口,重写Controller接口中的处理器方法。

如果你还想了解更多这方面的信息,记得收藏关注本站。

servlet执行原理图解(java 急求SpringMVC的工作原理的解释和它的流程图)

本文编辑:admin

更多文章:


ibeacon定位(iBeacon到底是什么定位技术)

ibeacon定位(iBeacon到底是什么定位技术)

大家好,关于ibeacon定位很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于iBeacon到底是什么定位技术的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本

2026年5月9日 05:15

下列关于interface的说法正确的是(java笔试选择题,求解)

下列关于interface的说法正确的是(java笔试选择题,求解)

大家好,今天小编来为大家解答以下的问题,关于下列关于interface的说法正确的是,java笔试选择题,求解这个很多人还不知道,现在让我们一起来看看吧!本文目录java笔试选择题,求解Java语言程序问题:下列接口的定义中,哪个是正确的急

2026年5月12日 16:45

swift的中文意思(Swift是什么意思)

swift的中文意思(Swift是什么意思)

本篇文章给大家谈谈swift的中文意思,以及Swift是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录Swift是什么意思SWIFT 中文解释是什麽Swift是什么意思Swift 读作:思微福特解析:1.作名词时翻

2025年12月16日 09:45

null号码是啥意思(短信服务中心显示null是什么意思)

null号码是啥意思(短信服务中心显示null是什么意思)

大家好,如果您还对null号码是啥意思不太了解,没有关系,今天就由本站为大家分享null号码是啥意思的知识,包括短信服务中心显示null是什么意思的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录短信服务中心显示nu

2026年6月29日 15:45

excel计算工资用什么函数(求excel工资计算的函数!)

excel计算工资用什么函数(求excel工资计算的函数!)

各位老铁们好,相信很多人对excel计算工资用什么函数都不是特别的了解,因此呢,今天就来为大家分享下关于excel计算工资用什么函数以及求excel工资计算的函数!的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录

2026年2月6日 17:15

jsp实用教程第四版实验源码(请大家介绍下关于JSP和J2EE方面的书)

jsp实用教程第四版实验源码(请大家介绍下关于JSP和J2EE方面的书)

大家好,jsp实用教程第四版实验源码相信很多的网友都不是很明白,包括请大家介绍下关于JSP和J2EE方面的书也是一样,不过没有关系,接下来就来为大家分享关于jsp实用教程第四版实验源码和请大家介绍下关于JSP和J2EE方面的书的一些知识点,

2025年8月29日 22:15

鼠标图标卡通(怎么让鼠标图标换成可爱的卡通造型)

鼠标图标卡通(怎么让鼠标图标换成可爱的卡通造型)

今天给各位分享怎么让鼠标图标换成可爱的卡通造型的知识,其中也会对怎么让鼠标图标换成可爱的卡通造型进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录怎么让鼠标图标换成可爱的卡通造型怎么把电脑上鼠标的箭头换成卡通的标

2026年2月12日 16:45

afxbeginthread用法(MFC Afxbeginthread返回的是什么)

afxbeginthread用法(MFC Afxbeginthread返回的是什么)

本篇文章给大家谈谈afxbeginthread用法,以及MFC Afxbeginthread返回的是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录MFC Afxbeginthread返回的是什么AfxBeginThrea

2026年5月14日 23:00

maiden的意思(韩文maiden是什么意思)

maiden的意思(韩文maiden是什么意思)

这篇文章给大家聊聊关于maiden的意思,以及韩文maiden是什么意思对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录韩文maiden是什么意思maide|i是什么意思为什么港剧对女警官都叫maidenmaaden的翻译是:

2026年3月1日 20:00

现在IT难吗?现在学习IT难吗

现在IT难吗?现在学习IT难吗

大家好,学it难吗相信很多的网友都不是很明白,包括现在IT难吗也是一样,不过没有关系,接下来就来为大家分享关于学it难吗和现在IT难吗的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!本文目录现在IT难吗现在学习IT难吗现

2025年9月22日 07:30

第一代数据库系统(数据库技术的应用与发展)

第一代数据库系统(数据库技术的应用与发展)

这篇文章给大家聊聊关于第一代数据库系统,以及数据库技术的应用与发展对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录数据库技术的应用与发展根据数据库模型的发展,数据库技术的发展可以划分为哪三代历史上著名的软件危机事件软件工程的发

2026年1月14日 07:45

verilog 条件编译(verilog条件生成和条件编译的区别)

verilog 条件编译(verilog条件生成和条件编译的区别)

各位老铁们好,相信很多人对verilog 条件编译都不是特别的了解,因此呢,今天就来为大家分享下关于verilog 条件编译以及verilog条件生成和条件编译的区别的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目

2026年8月6日 12:15

delphi中国(Delphi怎样支持多国语言)

delphi中国(Delphi怎样支持多国语言)

“delphi中国”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看delphi中国(Delphi怎样支持多国语言)!本文目录Delphi怎样支持多国语言Delphi连接器/德尔福汽车连接器中国销售网站那位知道麻烦告知一下请问

2025年9月16日 21:15

hop的中文?ps怎么下载免费版

hop的中文?ps怎么下载免费版

各位老铁们,大家好,今天由我来为大家分享hop,以及hop的中文的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录hop的中文ps怎么下载免费版mac

2026年5月15日 21:15

update语句与delete语句的一个区别是什么(sql中delete和update的问题)

update语句与delete语句的一个区别是什么(sql中delete和update的问题)

各位老铁们好,相信很多人对update语句与delete语句的一个区别是什么都不是特别的了解,因此呢,今天就来为大家分享下关于update语句与delete语句的一个区别是什么以及sql中delete和update的问题的问题知识,还望可以

2026年7月28日 17:30

企业调查问卷模板(企业调查报告模板)

企业调查问卷模板(企业调查报告模板)

“企业调查问卷模板”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看企业调查问卷模板(企业调查报告模板)!本文目录企业调查报告模板紧急!怎么写改善车间环境的调查问卷帮我想想问题就好!找一份企业员工问卷调查表调查问卷模板 调查问

2026年9月10日 13:45

aggressivedrivers罪恶都市(侠盗飞车罪恶都市密码)

aggressivedrivers罪恶都市(侠盗飞车罪恶都市密码)

各位老铁们,大家好,今天由我来为大家分享aggressivedrivers罪恶都市,以及侠盗飞车罪恶都市密码的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

2025年11月21日 09:30

mysql的配置文件在哪(确定MySQL在Linux系统中配置文件的位置)

mysql的配置文件在哪(确定MySQL在Linux系统中配置文件的位置)

“mysql的配置文件在哪”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看mysql的配置文件在哪(确定MySQL在Linux系统中配置文件的位置)!本文目录确定MySQL在Linux系统中配置文件的位置mysqlmy.in

2026年2月17日 09:30

couchdb导出数据(文档数据库)

couchdb导出数据(文档数据库)

本篇文章给大家谈谈couchdb导出数据,以及文档数据库对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录文档数据库arangodb mongodb 哪个好数据挖掘工程师必备技能是什么文档数据库文档型数据库是 NoSQL 中非常

2026年3月3日 21:45

panick是什么意思(al和cal,ical做后缀的区别)

panick是什么意思(al和cal,ical做后缀的区别)

今天给各位分享al和cal,ical做后缀的区别的知识,其中也会对al和cal,ical做后缀的区别进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录al和cal,ical做后缀的区别panick 什么意思pan

2025年12月9日 00:00

近期文章

本站热文

electronics软件(labcenter electronics是什么软件)
2025-05-22 23:45:02 浏览:134
博客是微博吗(博客是微博吗)
2025-05-22 22:45:01 浏览:111
diversity and distribution(悬赏英语短文)
2025-05-23 16:15:02 浏览:107
ios软件开发前景(iOS就业前景怎么样)
2025-05-22 23:00:01 浏览:102
next month(有The next month这个单词吗,和 next month有什么区别)
2025-05-23 02:30:01 浏览:102
patron(patron是什么意思)
2025-05-23 10:30:02 浏览:95
标签列表

热门搜索