SpringMVC笔记(一)——请求流程

简介


SpringMVC是一个开源的JavaWeb框架。Spring框架最初由Rod Johnson编写,据说只是为了证明一下,MVC并不是一件十分困难的事情。
SpringMVC提供了MVC架构以及用于开发灵活以及松散耦合的Web应用程序的组件,所谓MVC也就是将模型层、视图层以及控制层进行分离。

前端控制器DispatcherServlet


DispatcherServlet是SpringMVC的核心,这让我想起了Struts2中的StrutsPreparedAndExcuteFilter,同样是整个MVC框架的前端控制器。它负责处理所有Http请求和响应。其处理流程大致如下:

  1. 请求发送给DispatcherServlet,但前端控制器并不进行处理,而是委托给其他解析器,DispatcherServlet仅仅作为统一访问点,进行全局控制;
  2. DispatcherServlet解析请求URL,查询HandlerMapping,HandlerMapping将请求映射为一个HandlerExcutionChain(包含一个Handler(页面控制器)对象和多个HandlerInterceptor对象)返回,通过这种策略,很容易添加新的映射策略;
  3. DispatcherServlet根据获得的Handler选择一个合适的HandlerAdapter(如果成功获得了HandlerAdapter,则会开始执行拦截器的preHandler(…)方法);
  4. 提取request中的模型参数,填充Handler入参,执行Handler(也就是Controller),在填充参数的过程中,Spring将会根据你的配置,为你做一些额外的工作:
    • HttpMessageConveter:将请求消息(json或者xml数据)转化为一个对象,以及将对象转化为对应的相应信息;
    • 数据转化 :对请求消息进行数据转化,例如将String转化为Integer或者Double等;
    • 数据格式化:将请求消息格式化,例如将String转化为格式化数字或者格式化日期等;
    • 数据验证:例如验证数据的长度格式等等,并将验证结果存储到BindingResult或者Error中;
  5. Handler执行结束后,向DispatcherServlet返回一个ModelAndView对象(其中包含有模型数据和视图逻辑名);
  6. 根据ModelAndView,选择一个合适的ViewResolver(该ViewResolver必须已经在Spring容器中注册过)返回给DispatcherServlet;
  7. ViewResolver根据视图和模型来渲染
  8. 向用户返回渲染好的视图。
    流程图如下
    springMVC流程图
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值