了解springMVC

1. 了解官网

1.  首先到spring地址去,然后选择项目下面的任何一个子项目,我选择spring framework

https://spring.io/

2.选择spring framework项目下的learn,选择任意的版本文档,我选择了5.32这个文档

3. 如果你想使用这个5.3.2这个版本的 springmvc你可以直接点击如下,

4.最终到spring mvc官网下

5.要想查找其他版本对应的springMVC文档,可以在地址栏中输入和我相似版本号

6.这时候发现我们找不到对应的 Springmvc官网,我们可以只访问到它的spring-framework-reference

7.点击html文档,可以找到老版本的文档

8. 然后往下翻找文档可以查找到The web就是spring mvc的官方文档

2.  SpringMVC概念和特点

2.1、概述

Spring MVC是Spring Framework的一部分,是基于Java实现MVC的轻量级Web框架。

我们为什么要学习SpringMVC呢?

Spring MVC的特点:

  1. 轻量级,简单易学

  2. 高效 , 基于请求响应的MVC框架

  3. 与Spring兼容性好,无缝结合

  4. 约定优于配置

  5. 功能强大:RESTful、数据验证、格式化、本地化、主题等

  6. 简洁灵活

Spring的web框架围绕DispatcherServlet [ 调度Servlet ] 设计。

DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解形式进行开发,十分简洁;

正因为SpringMVC好 , 简单 , 便捷 , 易学 , 天生和Spring无缝集成(使用SpringIoC和Aop) , 使用约定优于配置 . 能够进行简单的junit测试 . 支持Restful风格 .异常处理 , 本地化 , 国际化 , 数据验证 , 类型转换 , 拦截器 等等......所以我们要学习 .

最重要的一点还是用的人多 , 使用的公司多 .

2.2、中心控制器

Spring的web框架围绕DispatcherServlet设计。DispatcherServlet的作用是将请求分发到不同的处理器。从Spring 2.5开始,使用Java 5或者以上版本的用户可以采用基于注解的controller声明方式。

Spring MVC框架像许多其他MVC框架一样, 以请求为驱动 , 围绕一个中心Servlet分派请求及提供其他功能DispatcherServlet是一个实际的Servlet (它继承自HttpServlet 基类)

springMVC的原理如下图所示:

当发起请求时被前置的控制器拦截到请求,根据请求参数生成代理请求,找到请求对应的实际控制器,控制器处理请求,创建数据模型,访问数据库,将模型响应给中心控制器,控制器使用模型与视图渲染视图结果,将结果返回给中心控制器,再将结果返回给请求者。

2.3、SpringMVC执行原理

图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。

简要分析执行流程

    1. DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。

      我们假设请求的url为 : http://localhost:8080/SpringMVC/hello

如上url拆分成三部分:

http://localhost:8080服务器域名

SpringMVC部署在服务器上的web站点

hello表示控制器

通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。

2.  HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。

3. HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。

4. HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。

5. HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。

6. Handler让具体的Controller执行。

7. Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。

8. HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet

9. DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。

10. 视图解析器将解析的逻辑视图名传给DispatcherServlet。

11. DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。

12. 最终视图呈现给用户。

最新文章

  1. Css格式与布局
  2. Apache2.4部署django出现403 Forbidden错误解决办法
  3. A daemon process class in python
  4. sqlserver能否调用webservice发送短信呢?
  5. get share button count
  6. 文件权限和目录权限详解(rwx)
  7. Centos6.x 安装vnc
  8. C++编程规范之18:尽可能局部地声明变量
  9. 自定义listView添加滑动删除功能
  10. asp Eval()函数的一些使用总结
  11. Java 获取SQL查询语句结果
  12. css 模板
  13. leetcode — triangle
  14. Linux chmod命令用法
  15. python实现简单的登录管理
  16. 在Repeater中使用DropDownList的方法
  17. 网易与Google合作发布开源UI自动化测试方案 牛逼:Google 方面评价,这可能是目前世界上最好的 Android 游戏自动化测试方案。
  18. having只用来在group by之后,having不可单独用,必须和group by用。having只能对group by的结果进行操作
  19. php下webservice使用总结
  20. Java虚拟机一

热门文章

  1. scroll-view滚动导航自动居中
  2. Java期末测试
  3. jquery(四:jquery的事件、Ajax)
  4. @Transactional千万不要这样用!!踩坑了你都可能发现不了!!!
  5. Linux内存占用过高排查过程
  6. PostgreSQL大表count方法总结及优化探讨
  7. YML
  8. oracle to mogdb 迁移---mtk工具
  9. corundum:100GNIC学习(三)——恢复工程
  10. I2C接口(续一)