1.框架结构图

架构流程文字说明

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4. DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
  5. 执行处理器(Controller,也叫后端控制器)。
  6. Controller执行完成返回ModelAndView
  7. HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
  11. DispatcherServlet响应用户

2.各组件说明

以下组件通常使用框架提供实现:

1.DispatcherServlet:前端控制器

用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。

 2.HandlerMapping:处理器映射器

HandlerMapping负责根据用户请求url找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。

3.Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。

由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。

4.HandlAdapter:处理器适配器

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

5.ViewResolver:视图解析器

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

6.View:视图

springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。

一般情况下需要通过页面标签或页面模版技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。

说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。

需要用户开发的组件有handler、view

3.组件扫描器

使用组件扫描器省去在spring容器配置每个Controller类的繁琐。

使用<context:component-scan>自动扫描标记@Controller的控制器类,

在springmvc.xml配置文件中配置如下:

<!-- 配置controller扫描包,多个包之间用,分隔 -->

<context:component-scan base-package="cn.springmvc.controller" />

4.注解映射器和适配器

1.配置处理器映射器

注解式处理器映射器,对类中标记了@ResquestMapping的方法进行映射。根据@ResquestMapping定义的url匹配@ResquestMapping标记的方法,匹配成功返回HandlerMethod对象给前端控制器。HandlerMethod对象中封装url对应的方法Method。

在springmvc.xml配置文件中配置如下:

<!-- 配置处理器映射器 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />

注解描述:

@RequestMapping:定义请求url到处理器功能方法的映射

2.配置处理器适配器

注解式处理器适配器,对标记@ResquestMapping的方法进行适配。

从spring3.1版本开始,废除了AnnotationMethodHandlerAdapter的使用,推荐使用RequestMappingHandlerAdapter完成注解式处理器适配。

在springmvc.xml配置文件中配置如下:

<!-- 配置处理器适配器 -->

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" />

5.视图解析器

视图解析器使用SpringMVC框架默认的InternalResourceViewResolver,这个视图解析器支持JSP视图解析

在springmvc.xml配置文件中配置如下:


    <!-- 配置视图解析器 -->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <!-- 配置逻辑视图的前缀 -->        <property name="prefix" value="/WEB-INF/jsp/" />        <!-- 配置逻辑视图的后缀 -->        <property name="suffix" value=".jsp" />     </bean>

逻辑视图名需要在controller中返回ModelAndView指定,比如逻辑视图名为ItemList,则最终返回的jsp视图地址:

“WEB-INF/jsp/itemList.jsp”

最终jsp物理地址:前缀+逻辑视图名+后缀

此博文仅供个人学习交流。

感觉写的好,给个好评呗!

最新文章

  1. 微信小程序的认识和开发适用性
  2. IE6图片元素img下高度超出出现多余空白
  3. [分享] 很多人手机掉了,却不知道怎么找回来。LZ亲身经历讲述手机找回过程,申请加精!
  4. IIS7 IIS8 中多个版本php共存的方法
  5. Tomcat启动后快逸报表报错的解决方法
  6. phalcon: plugin 结合Manager事件管理、dispatcher调度控制器 监听sql日志记录或其他拦截出来
  7. jquery.css 最简单的用法
  8. 使用markdown及highlight
  9. JBPM学习(六):详解流程图
  10. jquery mobile navbar
  11. C/C++中的函数传值
  12. 搜索+剪枝——运筹帷幄 (road.cpp)
  13. codeforces 437C The Child and Toy
  14. leetcode 第42题 Multiply Strings
  15. 如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”
  16. 计算单词出现的次数--linq
  17. D - MUH and Cube Walls
  18. 并发系列(1)之 Thread 详解
  19. pip 源
  20. 剑指Offer_编程题_15

热门文章

  1. CentOS单机安装k8s并部署.NET 6程序 压测 记录
  2. Java的Future接口
  3. 彻底明白Linux硬链接和软链接
  4. 解决方案:ipv4地址手动设置之后关掉推出再打开就没了(静态Ip设置好之后又自动变动态IP)
  5. 使用burpsuite对APP数据包进行安全测试
  6. [题解]第十一届北航程序设计竞赛预赛——D.最大公约数
  7. 【C# .Net GC】垃圾回收算法 应用程序线程运行时,
  8. python-can库基于PCAN-USB使用方法
  9. Oracle数据库工程实训笔记
  10. gcc与g++区别;编译选项