SpringMVC流程架构图
【组件说明】
以下组件通常使用框架提供实现:
1.DisPatcherServlet:前端控制器(不需要程序员开发)
用户请求到达前端控制器,它相当于MVC模式中的C(Controller),DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,DispatcherServlet的存在降低了组件之间的耦合性。
作用:作为接受请求,相应结果,相当于转发器,中央处理器,减少其他组件之间的耦合度。
2.HandlerMapping:处理器映射器(不需要程序员开发)
HandlerMapping负责根据用户请求找到Handler(即:处理器),SpringMVC提供了不同的映射器实现实现不同的映射方式,例如:配置文件方式、实现接口方式、注解方式等。
作用:根据请求的Url 查找Handler
3.HandLer:处理器(需要程序员开发)
Handler是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下,Handler对具体的用户请求进行处理。
由于Handler设计到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
注意:编写Handler时按照HandlerAdpter的要求去做,这样才可以去正确执行Handler。
4.HandlerAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
作用:按照特定的规则(HandlerAdapter要求的规则)去执行Handler
5.ViewResolver:视图解析器(不需要程序员开发)
ViewResolver负责将处理结果生成View视图,ViewResolver首先根据逻辑视图名解析成物理视图名,即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面的展示给用户。SpringMVC框架提供了很多View视图类型,包括:JSTLView、freemarkerView、pdfView等等.
作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)。
6.View视图 (需要程序员开发 jsp)
View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf)
一般情况下需要通过页面标签或者页面模板技术将模型数据通过页面展示给用户,需要由程序员根据业务需求开发具体的页面。
【流程图】
【流程图说明】
1.用户发送请求至 前端控制器DispatcherServlet。
2.前端控制器DispatcherServlet收到请求后调用处理器映射器HandlerMapping。
3.处理器映射器HandlerMapping根据请求的Url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制器DispatcherServlet。
4.前端控制器DispatcherServlet通过处理器适配器HandlerAdapter调用处理器Controller。
5.执行处理器(Controller,也叫后端控制器)
6.处理器Controller执行完后返回ModelAndView。
7.处理器映射器HandlerAdapter将处理器Controller执行返回的结果ModelAndView返回给前端控制器DispatcherServlet。
8.前端控制器DispatcherServlet将ModelAndView传给视图解析器ViewResolver。
9.视图解析器ViewResolver解析后返回具体的视图View。
10.前端控制器DispatcherServlet对视图View进行渲染视图(即:将模型数据填充至视图中)
11.前端控制器DispatcherServlet响应用户。
(注意颜色)
最新文章
- eclipse启动时报错 Could not create the java virtual machine
- JabRef 文献管理软件
- Java Programming Test Question 2
- Oracle中的数据类型
- springMVC全局Exception异常处理SimpleMappingExceptionResolver
- 部署步骤“回收 IIS 应用程序池”中出现错误: <;nativehr>;0x80070005<;/nativehr>;<;nativestack>;<;/nativestack>;拒绝访问。
- Asianux的SSH登录问题,密码不正确解决
- iOS:实现MKAnnotation协议,在地图上设置大头针,点击显示具体的位置信息
- selenium打开带有扩展的chrome
- CSS3动画变形Animations
- 2014.8.20break,continue,字符串,数字和日期
- setjmp和longjmp函数使用详解
- 如何用Excel直接查询Oracle中的数据(转)
- POJ 2251 三维BFS(基础题)
- 【HNOI 2018】转盘
- AI 判别式模型和生成式模型
- Java 多线程(四)之守护线程(Daemon)
- ZooKeeper学习之-Zookeeper简单介绍(一)
- 关于Google圆角高光高宽自适应按钮及其拓展
- MongoDB的入门
热门文章
- iOS CoreImage之滤镜简单使用
- Java基础知识介绍
- vivado与modelsim的联合仿真(二)
- java.lang.NoClassDefFoundError: org/junit/rules/TestRule
- Unity Tiling和offset的使用
- jQuery导入代码片段并绑定事件
- PHP抓取网络数据
- Help Tomisu UVA - 11440 难推导+欧拉函数,给定正整数N和M, 统计2和N!之间有多少个整数x满足,x的所有素因子都大于M (2<;=N<;=1e7, 1<;=M<;=N, N-M<;=1E5) 输出答案除以1e8+7的余数。
- linux USR1亦通常被用来告知应用程序重载配置文件
- 个人博客开发之 全局配置文件settings设置