springMVC简单执行流程

springMVC框架

执行流程:

1、用户发送请求至前端控制器DispatcherServlet

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器

3、处理器映射器根据请求url找到具体的处理器(也就是带有@Controller的类),生成处理器对象及处理器拦截器(如果有则生成)一并返回给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响应用户

我们可以看到DispatcherServlet是整个流程控制的中心。

组件说明:

  • DispatcherServlet:前端控制器

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

  • HandlerMapping:处理器映射器

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

  • Handler:处理器

Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。这一部分是手动编写的

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

  • HandlAdapter:处理器适配器

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

  • ViewResolver:视图解析器

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

  • View:视图

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

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

总结说明:在springmvc的各个组件中,处理器映射器、处理器适配器、视图解析器称为springmvc的三大组件。 需要用户开发的组件有handler处理器、view视图

注解实现

配置组件扫描器

<!-- 配置controller扫描包,多个包之间用,分隔 -->
<context:component-scan base-package="" />

配置映射器和适配器

首先需要在主配置文件中,配置处理器映射器和处理器适配器。

<!-- 配置处理器映射器,配置处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.
method.annotation.RequestMappingHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.
method.annotation.RequestMappingHandlerAdapter" /> <!--可以直接配置注解驱动,无需配置上面两个bean-->
<!-- 自动加载处理器映射器和处理器适配器 -->
<mvc:annotation-driven />

配置完成之后使用@ResquestMapping("url")即可

处理器映射器,会对类中标记了@ResquestMapping的方法进行映射。

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

处理器适配器:

前端控制器接收到请求后,找到注解形式的处理器适配器,对RequestMapping标记的方法进行适配,并对方法中的形参进行参数绑定。可以在springmvc处理器适配器上自定义转换器Converter进行参数绑定。

配置视图解析器

<!--视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--逻辑视图名的前缀-->
<property name="prefix" value="/WEB-INF/" />
<!--逻辑视图名的后缀-->
<property name="suffix" value=".jsp" />
</bean> <!--最终地址:前缀+逻辑视图名+后缀-->

最新文章

  1. 配置editplus,讓其支持代碼自動格式化功能.
  2. 关于MFC监听器的相关了解
  3. 【转载】UML用例图
  4. hdu 4655 Cut Pieces 找规律
  5. CentOS 普通用户设置sudo权限
  6. hdu 1043 pku poj 1077 Eight (BFS + 康拓展开)
  7. mybatis重拾---部署官方demo
  8. KVM虚拟机介绍
  9. 排座椅(seat)
  10. 在找一份相对完整的Webpack项目配置指南么?这里有
  11. 使用Tomcat的Reload提高开发速度(翻译)
  12. 【NOIP2014TG】solution
  13. vue-video-player集成videojs-contrib-hls实现.m3u8文件播放
  14. (0)HomeAssistant 教程
  15. 深入理解Proxy 及 使用Proxy实现vue数据双向绑定
  16. Tomcat 一般异常处理方式
  17. jdk1.8 HashMap扩容原理详解
  18. java select 多字段处理查询结果辅助类
  19. 6、JVM--类文件结构(下)
  20. Shell 基础 -- 输入、输出重定向

热门文章

  1. 20180706模拟赛T2——染色
  2. Win10解决修改host没有权限问题(其他文件同理) 一步都不能少哦:先添加再授权
  3. 几个golang 静态资源嵌入包
  4. django ORM创建
  5. 待办事项App 评测
  6. wpf radiobuttong 去前面的圆点, 自定义radiobutton样式
  7. elasticsearch 基于 rollover 管理按时间递增的索引 合并 删除
  8. Mysql 查看连接数,状态 最大并发数,以及设置连接数
  9. Kafka Offset Monitor页面显示空白
  10. 修改mysql存储过程或函数的定义着