对MVC 和 Spring MVC的理解

MVC

如果仅仅使用Servlet,Servlet不仅要准备数据,还要准备html。 尤其是准备html,可读性非常差,维护起来也很麻烦;而如果仅仅使用JSP,则会发现在JSP页面中写Java代码不是非常方便。

而我们在JSP/Sevlet的学习中常见的做法是,制定一个专门的Servlet只用来从数据库中查询数据,然后跳转到JSP页面,这里会用到request.getRequestDispatcher(“xxx.jsp”).forward(request, response)这样的代码,服务端跳转到xxx.jsp,是服务端跳转,都属于同一次请求,所以可以在xxx.jsp通过request取出查询的数据。

而这一过程其实就是用到了MVC的思想:

  • M 代表 模型(Model)
  • V 代表 视图(View)
  • C 代表 控制器(controller)
    模型就是数据,就是dao,bean;视图就是网页, JSP,用来展示模型中的数据
    控制器用来把不同的数据,显示在不同的视图上。
    在这里插入图片描述
    简单分析下上面这张图:
    1)用户发送httpRequest给控制转发器
    2)控制转发器将该请求转发给相应的业务控制器
    3)业务控制器得到响应的数据返回给控制转发器
    4)控制转发器通过可视的方式展示给用户

Spring MVC

首先来看一张图:
在这里插入图片描述
上图中对应着SpringMVC框架中的几个概念,分别是:前端控制器,处理映射器,控制器(处理器),视图解析器,视图

  • 【前端处理器】:接收客户端的请求URL并且,请求查找handlerMapping,然后获取ModelAndView然后调用视图解析器,然后得到真正的视图,最后返回给客户端
  • 【处理器映射器】:接收前端处理器请求,调用处理器适配器,得到处理器适配器返回的ModelAndView,将ModelAndView返回给前端处理器
  • 【处理器】:按照处理器适配器的规则执行,并返回ModelAndView给处理器适配器
  • 【处理器适配器】:接收处理器映射器的请求,定义规则去执行处理器,并返回modelandview给处理器映射器
  • 【视图解析器】:将逻辑视图解析成物理视图
  • 【视图】: 当前我们使用的是JSP

从用户发送请求,到最后得到响应,整个过程经历了如图①~⑪的过程:

  • 第一步:(发起)发起请求到前端控制器(DispatcherServlet)
  • 第二步:(查找)前端控制器请求HandlerMapping查找 Handler(可以根据xml配置、注解进行查找)
  • 第三步:(返回)处理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping会把请求映 射为HandlerExecutionChain对象(包含一个Handler处理器(页面控制器)对象,多个HandlerInterceptor 拦截器对象),通过这种策略模式,很容易添加新的映射策略
  • 第四步:(调用)前端控制器调用处理器适配器去执行Handler
  • 第五步:(执行)处理器适配器HandlerAdapter将会根据适配的结果去执行Handler
  • 第六步:(返回)Handler执行完成给适配器返回ModelAndView
  • 第七步:(接收)处理器适配器向前端控制器返回ModelAndView (ModelAndView是SpringMVC框架的一 个底层对象,包括 Model和view
  • 第八步:(解析)前端控制器请求视图解析器去进行视图解析 (根据逻辑视图名解析成真正的视图(jsp)), 通过这种策略很容易更换其他视图技术,只需要更改视图解析器即可
  • 第九步:(返回)视图解析器向前端控制器返回View
  • 第十步:(渲染)前端控制器进行视图渲染 (视图渲染将模型数据(在ModelAndView对象中)填充到request 域)
  • 第十一步:(响应)前端控制器向用户响应结果
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值