前言

SpringMVC是Spring的框架组件,Spring的一个模块,与Spring是直接整合在一起,而且SpringMVC是基于MVC的web框架。
MVC:模型-视图-控制器

MVC模式的演进

标准MVC

  • 🔥架构型的模型
  • 🔥Model:模型,包含数据和行为,提供模型数据查询和模型数据更新等功能,包含数据和业务
  • 🔥View:视图,负责模型的展示
  • 🔥Controller:控制器,让模型进行数据处理,让视图层进行数据返回和展示
  • 🔥推模型:


Web MVC

  • 🍂web是一个请求响应的模型,模型推送数据无法做到


model1

  • 🍂JSP负责表现逻辑、业务对象调用、控制逻辑,调用Javabean业务对象


model2

  • ☕Java EE里:web MVC就是指model2
  • ☕servlet作为控制器,JSP作为视图,Javabean作为模型
  • ☕控制器的问题
  • ☕请求参数封装麻烦
  • ☕给视图传输共享数据,视图和视图数据严重依赖控制器
  • ☕控制逻辑麻烦(必须用过前台传输的type来servlet判断你需要做什么操作)
  • ☕模型:业务和数据:service/dao
  • ☕视图:被绑定为JSP,更换很难


Web MVC的改进

  • 前端控制器:所有的请求都会到达前端控制器
  • 应用控制器:真正的处理请求,视图管理,业务逻辑管理,运用的是策略模式
  • 页面控制器(动作):功能处理代码(有点像SpringMVC中的Controller)
  • 上下文:所有请求的一些公用的逻辑,数据传递和共享






SpringMVC框架图解析

☔请求流程


☔SpringMVC框架图


  • 🎉DispatcherServlet
    • 前端控制器,接收所有请求的servlet
    • 所有的交互都是来自前端控制器
  • 🎉HandlerMapping
    • 处理器映射器
    • URL寻找Handler(controller处理方法),找到的是Handler的类型
  • 🎉HandlerExecutionChain
    • Handler + interceptor(拦截器)
    • 方法执行前、视图返回前、方法执行完成后,附加上功能
  • 🎉Handler
    • Controller
  • 🎉HandlerAdapter
    • 接口,适配的类来实现Handler的执行
  • 🎉ViewResolver
    • 视图解析:将ModelAndView对应的逻辑视图转换为真正的物理视图
  • 🎉View
    • 接口,不同的视图实现(JSP,freemaker,Excel)


SpringMVC灵活性体现

  • 💐拦截器:自定义拦截器进入执行链
  • 💐HandlerAdapter:执行controller,自定义adapter执行各种Handler
  • 💐ViewResolver:解析不同的视图

ps:因作者能力有限,有错误的地方请见谅

  • 喜欢这篇文章的话可以用快捷键 Ctrl + D 来收藏本页

最后更新: 2018年09月19日 16:01

原始链接: https://blog.hdqyf.club/2018/05/17/20180517-SpringMVC深入—SpringMVC原理/

× 请我吃糖~
打赏二维码