介绍一下spring mvc?

spring mvc 是 spring web mvc,spring 框架的一部分,一个 mvc 设计模型的表现层框架。
具体参考:4.2.9.RELEASE 版 spring mvc 官方文章
这里我们从基本组件,原理,MVC的调用过程分别介绍?

1. 基本组件:

下面每一个组件都可以花一大篇章进行讲解,日后等自己知识底子厚了在剖析,再更新…

前端控制器(DispatcherServlet)
处理器映射器(HandlerMapping)
处理器适配器(HandlerAdapter)
拦截器(HandlerInterceptor)
语言环境处理器(LocaleResolver)
主题解析器(ThemeResolver)
视图解析器(ViewResolver)
文件上传处理器(MultipartResolver)
异常处理器(HandlerExceptionResolver)
数据转换(DataBinder)
消息转换器(HttpMessageConverter)
请求转视图翻译器(RequestToViewNameTranslator)
页面跳转参数管理器(FlashMapManager)
处理程序执行链(HandlerExecutionChain)

处理器映射器、处理器适配器、视图解析器称为springmvc的三大件。
监听器,过滤器,拦截器称为springmvc的三大器。

DispatcherServlet前端控制器(springmvc框架提供)
作用:接收请求,响应结果
有了前端控制器减少各各组件之间的耦合性,前端控制器相关于中央调度器。
负责用户请求和响应,是一个中央控制器(调度),调用HandlerMapping查找Handler,调用HandlerAdapter处理器适配器执行Handler,调用ViewResolver视图解析器去解析视图,有了DispacherServlet有利于框架扩展,减少了各各组件之间耦合性。

HandlerMapping 处理器映射器(springmvc框架提供)
作用:根据url查找Handler,比如:根据xml配置、注解方式查找Handler
**HandlerAdapter处理器适配器(springmvc框架提供)
作用:执行Handler
不同类型的Handler有不同的HandlerAdapter,好处可以通过扩展HandlerAdapter支持更多类型的Handler
不需要开发,使用框架提供的
负责查找Handler(常用action),通过xml配置方式或注解方式将Handler类和request请求Handler链接地址进行对应配置。

Handler处理器(由程序员开发)
作用:业务处理
实现开发中又称为controller即后端控制器
Handler的开发按照HandlerAdapter的接口规则去开发。
Handler处理后的结果是ModelAndView,是springmvc的底层对象,包括 Model和view两个部分。
view中只包括一个逻辑视图名(为了方便开发起一个简单的视图名称)。

ViewReslover视图解析(springmvc框架提供)
作用:根据逻辑视图名创建一个View对象(包括真实视图物理地址)
针对不同类型的view有不同类型的ViewReslover,常用的有jsp视图解析器即jstlView
不需要开发,使用框架提供的
负责进行视图解析,返回View,框架执行很多类型的View(jstlView、pdfView。。。)

View视图(由程序员开发jsp页面)
作用:将模型数据填充进来(将model数据填充到request域)显示给用户
view是一个接口,实现类包括:jstlView、freemarkerView,pdfView…

2. springmvc架构原理

2.1mvc在b/s系统中应用
mvc:是一种设计模式。设计模式理解为最佳实践。
b/s:早期大部分系统是c/s结构,是一种客户/服务器架构,和b/s(客户/服务器架构),b/s结构中客户端指的是浏览器。
web系统是一种b/s系统架构。
在这里插入图片描述
2.2springmvc框架原理
在这里插入图片描述
在这里插入图片描述

3. MVC的调用过程

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

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器查找Handler。

3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet。

4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5、HandlerAdapter调用处理器Handler

6、Handler执行完成返回ModelAndView

7、HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器,ViewReslover根据逻辑视图名解析View

9、ViewReslover返回View

10、DispatcherServlet对View进行渲染视图(即将模型数据填充至request域)。

11、DispatcherServlet响应用户

spring mvc 运行流程?
1、在 web 项目的 web.xml 文件配置 DispatcherServlet,启动 web 项目完成初始化动作
2、http 请求到 DispatcherServlet
3、根据 HttpServletRequest 查找 HandlerExecutionChain
4、根据 HandlerExecutionChain 获取 HandlerAdapter、执行 handler
5、Handler 执行完成返回 ModelAndView
6、DispatcherServlet 进行结合异常处理 ModelAndView
7、DispatcherServlet 进行视图渲染,将 Model 数据在 View 中填充
8、DispatcherServlet 返回结果
9、配置过滤器,拦截器会在相应位置起作用

Spring3.1新特性

一、Spring2.5之前,我们都是通过实现Controller接口或其实现来定义我们的处理器类。

二、Spring2.5引入注解式处理器支持,通过@Controller 和 @RequestMapping注解定义我们的处理器类。并且提供了一组强大的注解:

需要通过处理器映射DefaultAnnotationHandlerMapping和处理器适配器AnnotationMethodHandlerAdapter来开启支持@Controller 和 @RequestMapping注解的处理器。

@Controller:用于标识是处理器类;

@RequestMapping:请求到处理器功能方法的映射规则;

@RequestParam:请求参数到处理器功能处理方法的方法参数上的绑定;

@ModelAttribute:请求参数到命令对象的绑定;

@SessionAttributes:用于声明session级别存储的属性,放置在处理器类上,通常列出模型属性(如@ModelAttribute)对应的名称,则这些属性会透明的保存到session中;

@InitBinder:自定义数据绑定注册支持,用于将请求参数转换到命令对象属性的对应类型;

三、Spring3.0引入RESTful架构风格支持(通过@PathVariable注解和一些其他特性支持),且又引入了更多的注解支持:

@CookieValue:cookie数据到处理器功能处理方法的方法参数上的绑定;

@RequestHeader:请求头(header)数据到处理器功能处理方法的方法参数上的绑定;

@RequestBody:请求的body体的绑定(通过HttpMessageConverter进行类型转换);

@ResponseBody:处理器功能处理方法的返回值作为响应体(通过HttpMessageConverter进行类型转换);

@ResponseStatus:定义处理器功能处理方法/异常处理器返回的状态码和原因;

@ExceptionHandler:注解式声明异常处理器;

@PathVariable:请求URI中的模板变量部分到处理器功能处理方法的方法参数上的绑定,从而支持RESTful架构风格的

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值