SpringMVC-简述

Spring MVC

Model 1时代

所有请求直接转发到jsp然后在jsp编写业务代码,然后根据不同的结果跳转不同的页面

Model 2时代

Controller

  1. 取得表单数据
  2. 处理业务逻辑
  3. 根据不同的情况跳转不同的页面

View

  1. 展示数据

Model

  1. 业务逻辑
  2. 保存数据

简介

SpringMVC的特点:

  1. 轻量级,简单易学
  2. 与spring无缝结合,可以将mvc中所有需要的类注册到ioc容器中
  3. 高效,基于请求和响应的mvc框架
  4. 功能强大,RESTFUL风格,格式化,数据验证
  5. 约定大于配置

说白了学它就一个原因,因为它让我们开发变得简单了

原理

回顾servlet

我们都学过java web,那时候我们对于前端的请求都是通过一个servlet来处理的,然后在servlet里面,处理前端传来的数据,调用业务逻辑,返回处理之后的数据,然后servlet根据这些数据,进行重定向或者请求转发

一个请求对应一个servlet,这就会导致我们在开发中写了大量的servlet,而且每次都需要在web.xml中注册,十分繁琐。


没有什么是加一层解决不了的,所以,springmvc在servlet之前加了一层来简化我们的开发

SpringMVC的web框架是以围绕DispatcherServlet(前端控制器,调度器,请求分发器)设计的。它的作用就是将请求分发到不同的处理器(方法或者类,下面的初识mvc是以类级作为处理器,但是一般都会使用方法级去做处理器)

下图是DispatcherServlet的结构图,我们可以看到一些在javaweb阶段比较眼熟的类,比如Servlet,GenericServlet,HttpServlet。因此我们可以得出,DispatcherServlet本质就是一个和我们当时写的servlet是一样的,只是他帮我们做了很多事情。

人到中年有三大件,枸杞大枣保温杯。

SpringMVC中也有三大件,分别是

  • 处理器映射器(HandlerMapping)
  • 处理器适配器(HandlerAdapter)
  • 视图解析器(ViewResolver)

我们来看看这三大件是如何在springmvc中发挥作用的,原理图如下:

核心类图

简要分析

  1. DispatcherServlet就可以简单理解为前端控制器,他会将所有客户端的请求拦截
  2. 将该请求发送给HandlerMapping实现类,该实现类根据url查找到对应的控制器,将结果返回给DispatcherServlet
  3. DispatcherServlet根据HandlerMapping解析的结果,适配并执行对应的控制器的逻辑,
  4. 控制器返回信息,HandlerAdapter实现类接收该信息并将其解析成ModelAndView对象返回到DispatcherServlet
  5. DispatcherServlet调用ViewResolver实现类将HandlerAdapter实现类传回来的视图逻辑和模型解析
  6. 视图解析器将解析后的逻辑视图名传回DispatcherServlet
  7. DispatcherServlet根据解析后的视图名称找到该视图
  8. 渲染视图,返回页面,作出响应
给作者买杯咖啡吧~~~