文章目录

  • 一、首先什么是SpringMVC?
  • 二、同类的技术有哪些?
  • 三、对比同类的优缺点是哪些?
  • 四、SpringMVC的组成部分?
  • 五、SpringMVC项目的架构图

一、首先什么是SpringMVC?

SpringMVC是一个基于MVC实现的web框架,用于替代传统的servlet。MVC全名是Model View Controller,是模型(model)——视图(view)——控制器(controller)的缩写。

二、同类的技术有哪些?

SpringMVC同类的技术要数Struts2

三、对比同类的优缺点是哪些?

对比Struts2的优势很明显:
1、拦截机制的不同,Struts2是类级别的拦截,SpringMVC是方法级别的拦截
2、底层架构的不同,Struts2采用Filter(StrutsPrepareAndExecuteFilter)实现,SpringMVC则是采用Servlet(DispatcherServlet)实现。
3、配置方面不同,SpringMVC和Spring是无缝结合的,相对于Struts2省却了很多配置,提高了开发效率符合当前敏捷开发思路。

四、SpringMVC的组成部分?

1、前端控制器(DispatcherServlet)——框架已提供不需要开发
中央处理器,负责请求的转发,相当于一个请求转发器
2、处理器映射器(HandlerMapping)——框架已提供不需要开发
接收到前端控制器发送来的url后,对url进行匹配,返回给前端控制器一个处理器执行链(HandlerExecuteChain)
3、处理器适配器(HandlerAdapter)——框架已提供不需要开发
接收到前端控制器要寻找的Handler,选择对应的Handler进行执行,执行后返回给前端控制器ModelAndView
4、处理器(Handler)——需要程序员开发
接受前端控制器发送来的任务,返回ModelAndView给处理器适配器
5、视图解析器(ViewResolver)——框架已提供不需要开发
接受前端控制器发送来的逻辑视图(ModelAndView),转换成真正的视图,返还给前端控制器供其渲染
6、视图(View)——需要程序员开发
经过视图解析器生成的视图(如JSP、Excel、Freemarker、PDF等等),经前端控制器渲染后发送到请求方

五、SpringMVC项目的架构图


SpringMVC架构原理解析如下:
第一步:客户端发起请求到前端控制器(DispatcherServlet)
第二步:前端控制器请求HandlerMapping处理器映射器去查找相应的Handler,其中映射器可以通过XML配置也可通过注解实现
第三步:处理器映射器对url进行匹配后返回给前端控制器执行链(HandlerExecutionChain)
第四步:下一步开始请求执行Handler,请求到了处理器适配器(HandlerAdapter)去适配相应的Handler方法
第五步:Handler开始执行
第六步:Handler执行完返回ModelAndView给处理器适配器(HandlerAdapter)
第七步:处理器适配器向前端控制器返回ModelAndView对象
第八步:前端控制器把请求发送到视图解析器(ViewResolver)进行视图解析,根据逻辑视图名解析成真正的视图(jsp)
第九步:视图解析器向前端控制器返回View
第十步:前端控制器进行视图渲染,视图渲染将视图模型数据(在ModelAndView对象中)填充到request域中
第十一步:前端控制器向用户响应结果

总结:
今天先大体上介绍了什么是SpringMVC,并且介绍了请求的流转流程,后续会陆续更新SpringMVC的各个模块以及用法

SpringMVC学习——对于SpringMVC的整体认识相关推荐

  1. (转)SpringMVC学习(一)——SpringMVC介绍与入门

    http://blog.csdn.net/yerenyuan_pku/article/details/72231272 SpringMVC介绍 SpringMVC是什么? SpringMVC和Stru ...

  2. (转)SpringMVC学习(三)——SpringMVC的配置文件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231527 读者阅读过SpringMVC学习(一)--SpringMVC介绍与入门这篇文章后 ...

  3. (转)SpringMVC学习(六)——SpringMVC高级参数绑定与@RequestMapping注解

    http://blog.csdn.net/yerenyuan_pku/article/details/72511749 高级参数绑定 现在进入SpringMVC高级参数绑定的学习,本文所有案例代码的编 ...

  4. (转)SpringMVC学习(五)——SpringMVC的参数绑定

    http://blog.csdn.net/yerenyuan_pku/article/details/72511611 SpringMVC中的参数绑定还是蛮重要的,所以单独开一篇文章来讲解.本文所有案 ...

  5. SpringMVC学习(二)——SpringMVC架构及组件(及其运行原理)

    相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上一篇文章中SpringMVC的处理流程吗?    这个图大致描述了SpringMVC的整个处理流程,这个流程图还是相对来 ...

  6. (转)SpringMVC学习(二)——SpringMVC架构及组件

    http://blog.csdn.net/yerenyuan_pku/article/details/72231385 相信大家通过前文的学习,已经对SpringMVC这个框架多少有些理解了.还记得上 ...

  7. springMVC学习(7)-springMVC校验

    一.校验理解: 对于安全要求较高点建议在服务端进行校验. 控制层conroller:校验页面请求的参数的合法性.在服务端控制层conroller校验,不区分客户端类型(浏览器.手机客户端.远程调用) ...

  8. (转)SpringMVC学习(十一)——SpringMVC实现Resultful服务

    http://blog.csdn.net/yerenyuan_pku/article/details/72514034 Restful就是一个资源定位及资源操作的风格,不是标准也不是协议,只是一种风格 ...

  9. (转)SpringMVC学习(十)——SpringMVC与前台的json数据交互

    http://blog.csdn.net/yerenyuan_pku/article/details/72514022 json数据格式在接口调用中.html页面中比较常用,json格式比较简单,解析 ...

最新文章

  1. R语言使用ggpubr包的ggarrange函数组合多张结论图:使用ggpubr包将图像、文本、表格组合在一起展示
  2. 是时候对XSLT说“Goodbye”了吗?
  3. 【译】区块链是如何工作的——用JavaScript演示
  4. 用 pycharm 可视化管理 sqlite 数据库
  5. Hibernate学习(1):查询demo
  6. 【编辑器】Notepad++相关
  7. 中国首家干线物流联合创新中心成立,实施自动驾驶数据共享是否可行?...
  8. 论SVGA直播礼物特效对直播平台的重要性
  9. 图像/视频无损放大,用一个工具就够了
  10. 如何讲网页保存为pdf文件
  11. 南阳oj 韩信点兵
  12. 交换机,路由器上的 S口 F口 E口 Gi是什么?
  13. mumu的adb_如何使用网易mumu模拟器调试安卓程序?
  14. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用
  15. 二维码活码的诞生、技术原理及使用场景
  16. 【 已解决 】iPhone 越狱后用爱思助手刷机出现 NORdata,无法刷机
  17. 敏捷实践不可忽略的环节
  18. 新买的笔记本电脑需要测试什么软件,新买的笔记本电脑一定不要着急用,先做好这五步,才能放心使用...
  19. Windows开机提示:“Windows 未能启动。原因可能是最近更改了硬件或软件。解决此问题的步骤:”
  20. Word文档里有空白但无法打字怎么回事?

热门文章

  1. ALEIDoc EDI(5)--Inbound Function
  2. 2015年我国互联网行业概况及现状分析
  3. 会计转行SAP FICO实施顾问,百万年薪等你来挑战!
  4. CO CCA-作业分割优先级
  5. 做了这么久数据分析没收获,原来一直在做“伪数据分析”
  6. cf手游服务器维护19年9月19,神雕侠侣2手游9月19日停服维护公告_神雕侠侣2手游9月19日更新了什么_玩游戏网...
  7. sql 2008服务器响应慢,SQL Server 2008停止响应后,Web服务器不活动
  8. 在计算机中常用的数据表示方法有哪些,数据在计算机中的表示方法
  9. oracle 数字不用,oracle – Plsql将数字(货币)拼写为意大利货币而不用硬编码的翻译编号...
  10. Python re 模块findall() 函数返回值展现方式详解