springmvc原理解析

我们在使用springmvc进行开发的时候,只用在web.xml中配置一下DispatcherServlet,然后在springmvc.xml中配置一下处理器映射器,处理器适配器,视图解析器。使用注解开发的话更加简单方便,都不会去配置适配器和映射器。下面就来说一下springmvc处理一个请求的整个过程。

再次之前,先将一些事情交代清楚:

1、前端控制器DispatcherServlet用来接收用户请求,它并不会执行相关的业务逻辑;

2、处理器(即程序员编写的Controller)用于处理最终的请求;

3、用户发送过来的请求是一个url,而前端控制器并不知道要去请求具体的哪一个处理器Controller,此时需要借助Handlermapping来完成这方面的操作;

4、处理器适配器用于执行(或者说是调用)处理器。为什么要有适配器呢?因为我们不可能在前端控制器中将需要调用的处理器给写死,这么做是为了方便程序的扩展,所以就需要适配器来完成执行处理器。

5、处理器适配器会按照特定的规则(适配器所要求的规则)去执行处理器,比如说,适配器要求处理器去实现某一个接口,那么在编写处理器的时候就需要去实现这个接口。

6、视图View是一个接口,实现类支持不同类型的View类型,比如jsp、freemarker、pdf等。

下面开始讲述一个请求被处理的过程:

  1. 请求到达前端控制器DispatcherServlet(接收用户请求并响应)
  1. 前端控制器通过处理器映射器请求查找Handler处理器(可以根据xml配置或者注解来进行查找)
  1. 处理器映射器返回一个执行链HandlerExecutionChain(这个链中有需要最终调用的Handler,还有多个Interceptor拦截器)
  1. 前端控制器访问适配器,请求执行Handler
  1. 适配器调用Handler,执行业务逻辑
  1. Handler向适配器返回 ModelAndView ,并由适配器返回给前端控制器
  1. 进行视图解析,此处需要登场的是视图解析器,前端控制器访问视图解析器,进行视图解析,根据逻辑视图名返回真正的视图view
  1. 前端控制器根据返回的view进行视图渲染(将模型数据——在ModelAndView对象中,填充到request域中)
  1. 响应到客户端

绘图如下:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值