Spring MVC 为什么要使用SpringMVC? MVC设计模式 搭建第一个Spring MVC项目 处理器映射器 一个Controller处理多个方法 注解方式实现 请求流程介绍

 

 

 

JavaEE体系结构包含四层,从上到下分别是应用层、Web层、业务层、持久层。我们Spring MVC就是一个Web层框架,Spring就是业务层框架,MyBatis就是持久层框架。

在我们Servlet当中,程序各层之间的依赖非常强,耦合度高。这严重违背了高内聚低耦合的设计原则,在我们SpringMVC当中就把模型和视图进行了分离,降低耦合度

Spring MVC是一种基于Java的实现了WEB MVC设计模式的请求驱动类型的轻量级Web框架,即使使用了MVC架构模式的思想,Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架得目的就是帮助我们简化开发,SpringMvc也就是简化我们得日常Web开发。

MVC设计模式

MVC全名称Model View Controller,其中model代表Java BeanView代表视图,比如JSP或者HTML文件,Controller代表控制器,对应组件Servlet

Model1

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

Model1在一定程序上实现了MVC的设计理念,即JSP将控制层表示层合二为一,JavaBean则为模型层。

优点:建构简单,比较适合小型项目的开发,基本上使用JSP+持久层就可以完成小型项目的开发。

缺点:JSP页面有控制页面显示的代码又有与后台业务逻辑交互的Java代码,职责不单一,页面负担很重,影响页面运行速度;而且不方便后期的维护。如果不加选择随意的使用Model1,会导致JSP页面内嵌入大量得到脚本片段或Java代码。特别是当需要处理请求量很大时,情况会更加糟糕。

Model2

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

Model2则是将控制层(Servlet)单独地划分出来了,专门负责业务流程地控制,响应页面地请求,创建所需的JavaBean实例,并将处理后台数据再返回给JSP页面,这样层次分明,不同开发人员的职责分工明确,所以项目越复杂,使用Model2架构模型的好处就越大。

优点:清晰地分离了表达式和内容,明确了角色地定义以及开发者与网页设计者地分工,适合大型项目地开发

缺点:分层过多,不适合小型项目地开发

MVC

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

MVC全名是Model View Controller,是模型(model),视图(view),控制器(controller)的缩写,是一种软件设计典范。它使用一种业务逻辑、数据与界面显示分离的方法来组织,将从多的业务逻辑聚集到一个部件里面,在需要改进和个性定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。

搭建第一个Spring MVC项目

01.创建Maven项目

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

02.引入所需要的jar

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

03.web.xml文件中添加servlet核心控制器

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

04.创建springmvc.xml文件

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

05.创建对应的Controller

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

当我们访问HelloController时候,handlerRequest()方法就默认执行,返回一个ModelAndView,

是由modelview,model底层是一个Map集合,用来保存我们前后台传输的数据,view就是一个视图名称

06.测试

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

处理器映射器

01. BeanNameUrlHandlerMapping

BeanNameUrlHandlerMappingSpring MVC默认的处理器映射器

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

使用默认的处理器映射器,控制器的Bean的名称,必须以“/”开头,否则无法访问

02. SimpleUrlHandlerMapping

SimpleUrlHandlerMapping(映射器)Spring MVC中适用最强的handler mapping类,允许明确指定URL模式和handler的映射器关系

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

另一种写法:

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

 

一个Controller处理多个方法

创建Controller

Spring提供了一个MultiActionController(多动作控制器),用于支持在一个控制器当中添加多种功能的处理方法。

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

注意:其余方法同上一样

方法名称解析器

001.PropertiesMethodNameResolver

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

002.ParameterMethodNameResolver

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

注解方式实现

01.修改springmvc.xml文件

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

02.创建一个UserController

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

03.UserController当中添加add方法

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

请求流程介绍

01.整体流程

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

(1) 首先用户发送请求到前端控制器,前端控制器根据请求(如URL)来决定选择哪一个页面页面控制器进行处理并把请求委托给它

(2) 页面控制器接收到请求后,调用业务对象,进行功能处理,处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

(3) 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入一遍视图渲染

(4) 前端控制器再次收回控制权,将响应返回给用户

02.核心流程

 Spring MVC
为什么要使用SpringMVC?
MVC设计模式
搭建第一个Spring MVC项目
处理器映射器
一个Controller处理多个方法
注解方式实现
请求流程介绍

(1) 用户请求至 前端控制器 DispatcherServlet

(2) 前端控制器DispatcherServlet 接收到请求后调用处理器映射器HanlderMapping

(3) 处理器映射器HanlderMapping根据请求的Url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制器DispatcherServlet

(4) 前端控制chDispatcherServlet调用处理器适配器HandlerAdapter

(5) 处理器适配器HandlerAdapte根据适配的结果去执行相应的Handler(Controller,也叫做后端控制器)但是在这之前会经过一系列的数据的处理(比如数据的绑定,数据转换、格式化、验证等)

(6) Handler执行完后,给适配器返回ModelAndView

(7) 处理器适配器HandlerAdapter向前端控制器返回 ModelAndView

(8) 前端控制器得到ModelAndView以后会调用视图解析器ViewResolver进行视图解析(根据逻辑视图名解析成真正的视图(jsp))

(9) 视图解析向前端控制器返回View

(10) 前端控制器调用真实的JSP进行视图的渲染,最后响应给用户端