SpringMVC的Map共享数据的原理

SpringMVC流程

SpringMVC的流程
简单来说就是一个请求到达前端控制器,先由处理器映射器处理请求获得chain执行链,这个执行链还包含了拦截器,这个执行链经过处理器适配器拿到合适的处理器适配器,去执行相应的处理器方法,最终返回ModelAndView,接着通过视图解析器获取逻辑视图结合数据渲染为物理视图最终返回给用户

前言

在参考一个开源项目的时候看到在其代码编写在Controller层使用Map来共享数据,因为以前一直都是使用ModelAndView或者Model共享数据,想当然的以为这是SpringMVC专门用来共享数据的组件,其他的不行,于是看到可以这样用时,便开始疑惑,在查阅了一些资料以及自己debug之后,写下这一篇小小的分析总结

  • 罪魁祸首
@RequestMapping(value = "/detail",method = RequestMethod.GET)
//这里使用Map来共享数据
public String detail(Long id,Map map){
   
    OrderInfo orderInfo = orderInfoService.getById(id);
    UserInfo userInfo = userInfoService.getById(orderInfo.getUserId());
    List<OrderAction> orderActionList =  orderActionService.getOrderAction(id);
    map.put("userInfo",userInfo);
    map.put("orderInfo",orderInfo);
    map.put("orderActionList",orderActionList);
    return "order/order_detail";
}

这个map是一个BindingAwareModelMap,这个map是怎么来的,SpringMVC是怎么帮我们封装参数的

从DispatcherServlet开始

在配置好web.xml之后,一切能够到达服务的请求都会到达DispatcherServlet,在DispatcherServlet做分发,在Servlet中,获取到适配器中后,调用适配器的handle来执行

DispatcherServlet

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值