Spring MVC

一.什么是SpringMVC呢?


        在官方定义中,所谓的SpringMVC是基于Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中,从⼀开始就包含在 Spring 框架中。它就被称为MVC。

总结:SpringMvc是一个web框架,基于Servlet API构建

1.1MVC的介绍


        SpringMVC从名字上分解的话,就是Spring和MVC,那么我们就先来讲解一下,什么是MVC!

MVC的全名是Model View Controller ,是软件工程的一种架构模式,分为三部分:模型、视图和控制器。

Model(模型):应⽤程序中⽤于处理应⽤程序数据逻辑的部分。通常模型对象负责在数据库中存取数据
View(视图)是应⽤程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应⽤程序中处理⽤户交互的部分。通常控制器负责从视图读取数据, 控制⽤户输⼊,并向模型发送数据。

总结:人向Controller层请求数据,Controller就向Model层请求数据,model层将数据传递给Controller,然后Controller层不是直接将数据传递请求者,而是给View,view将数据给请求者!

1.2SpringMVC和MVC的关系


        MVC 是⼀种思想,⽽ Spring MVC 是对 MVC 思想的具体实现。
总结来说,Spring MVC 是⼀个实现了 MVC 模式,并继承了 Servlet API 的 Web 框架。既然是 Web框架,那么当⽤户在浏览器中输⼊了 url 之后,我们的 Spring MVC 项⽬就可以感知到⽤户的请求。
两者之间的联系: 

Spring MVC 是基于 MVC 架构模式的 Web 应用程序开发框架,用于构建 Java Web 应用程序。
Spring MVC 扩展了经典的 MVC 架构,提供了一些额外的功能和特性,使得开发 Web 应用程序更加简单和灵活。
在 Spring MVC 中,模型(Model)表示为 POJO(Plain Old Java Object),视图(View)通常是 JSP、Thymeleaf 或其他模板技术,而控制器(Controller)通常是一个带有 @Controller 注解的 Spring Bean。
Spring MVC 提供了一套基于注解的请求映射机制,简化了 URL 到处理器的映射配置。

1.3SpringMVC的作用

  • 让我们能非常简单的设计出干净的Web 层和薄薄的Web 层;

  • 进行更简洁的Web 层的开发;请求参数是映射到方法的参数上

  • 天生与Spring框架集成(如IoC容器、AOP等);

  • 提供强大的约定大于配置的契约式编程支持;

  • 能简单的进行Web 层的单元测试;

  • 支持灵活的URL到页面控制器的映射;

  • 非常容易与其他视图技术集成,如Velocity、FreeMarker 等等,因为模型数据不放在特定的API 里,而是放在一个Model里(Map 数据结构实现,因此很容易被其他框架使用);

  • 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;

  • 提供一套强大的JSP标签库,简化JSP开发;

  • 支持灵活的本地化、主题等解析;

  • 更加简单的异常处理;

  • 对静态资源的支持;

  • 支持Restful风格。

 

二.Spring Web MVC处理请求的流程

 

执行过程:

第一步:发起请求到前端控制器(DispatcherServlet)

第二步:前端控制器请求HandlerMapping查找

可以根据xml配置、注解进行查找

第三步:处理器映射器HandlerMapping向前端控制器返回Handler

第四步:前端控制器调用处理器适配器去执行Handler

第五步:处理器适配器去执行Handler

第六步:Handler执行完成给适配器返回ModelAndView

第七步:处理器适配器向前端控制器返回ModelAndView

ModelAndView是springmvc框架的一个底层对象,包括 Model和view

第八步:前端控制器请求视图解析器去进行视图解析

根据逻辑视图名解析成真正的视图(jsp)

第九步:视图解析器向前端控制器返回View

第十步:前端控制器进行视图渲染

视图渲染将模型数据(在ModelAndView对象中)填充到request域

第十一步:前端控制器向用户响应结果

常用组件:

1、前端控制器DispatcherServlet(不需要程序员开发)

作用: 接收请求,响应结果,相当于转发器,中央处理器。

有了DispatcherServlet减少了其它组件之间的耦合度。

2、处理器映射器HandlerMapping(不需要程序员开发)

作用:根据请求的url查找Handler

3、处理器适配器HandlerAdapter(不需要程序员开发)

作用:按照特定规则(HandlerAdapter要求的规则)去执行Handler

4、处理器Handler(需要程序员开发)

作用: 编写处理请求的逻辑代码

注意:编写Handler时按照HandlerAdapter的要求去做,这样适配器才可以去正确执行Handler

5、视图解析器View resolver(不需要程序员开发)

作用:进行视图解析,根据逻辑视图名解析成真正的视图(view)

6、视图View(需要程序员开发jsp)

View是一个接口,实现类支持不同的View类型(jsp、freemarker、pdf...)

学习 SpringMVC 主要掌握以下三个功能:

连接的功能:将⽤户(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的Spring 程序。
获取参数的功能:⽤户访问的时候会带⼀些参数,在程序中要想办法获取到参数。
输出数据的功能:执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤户。

三.创建 

第一步:创建项目


使用Maven项目添加Spring MVC框架依赖的方式创建
使用SpringBoot的方式创建的Spring MVC项目
但由于第一种方式过于繁琐,我们这边采取第二种,如上图创建。

第二步,SpringMVC的连接


        在讲解连接之前,我们需要明白一个专业词汇:路由映射!

所谓的路由映射指的是,当用户访问一个url时,将用户的请求对应到程序中某个类的某个方法的过程。

实现方式:使用相关注解:@RequestMapping,@PostMapping,@GetMapping

解析注解:

@RequestMapping注解的基本用法说明:

@RequestMapping注解可以修饰类,也可以修饰方法,当修饰类和方法时,访问的地址是类+方法。
@RequestMapping注解可以处理任何HTTP方法的请求,包括GET、POST、PUT、DELETE等。
@RequestMapping注解可以使用method属性来进行限定处理请求的HTTP方法。
@PostMapping注解的基本用法说明:

@PostMapping注解通常用于修饰控制器类中的方法,而不是类本身。
@PostMapping注解只可以处理HTTP POST请求映射到处理方法上。
@GetMapping注解的基本用法说明:

@GetMapping注解通常用于修饰控制器类中的方法,而不是类本身。
@GetMapping注解只可以处理HTTP GET请求映射到处理方法上。

 

第三步,Spring MVC获取参数


1.获取单个参数

获取单个参数的方法:一般有两个方法:

当url的参数名和请求参数一致,直接获取url的参数
当url的参数名和请求不一样,则使用 @RequestParam("参数名") 注解,使用了该注解时,一定需要传值!或者使用@RequestParam(value = "参数名", required = false),可以避免传值

2.获取多个参数

       获取方法和获取当个参数一致。

获取多个参数注意说明:

  1. 进行参数匹配时,后端代码的参数名称要与地址栏中的参数名称要保证完全一致。
  2. 前后端进行参数匹配时,是以参数的名称进行匹配的,因此地址栏中的参数位置是不影响后端获取参数的结果。 

 

总结


        Spring MVC 是一个基于 Java 的 Web 框架,用于开发 Web 应用程序。它建立在经典的 MVC(Model-View-Controller)设计模式之上,提供了一种灵活、可扩展的方式来构建 Web 应用程序。下面是关于 Spring MVC 的一些总结:

特点和优势


模块化设计:Spring MVC 将应用程序分解为模型(Model)、视图(View)和控制器(Controller),使开发人员可以更容易地管理和维护代码。

灵活性:Spring MVC 提供了丰富的配置选项和可扩展性,可以根据项目需求定制开发流程和组件。

与其他 Spring 模块整合:Spring MVC 与其他 Spring 模块(如 Spring Core、Spring Boot、Spring Data 等)无缝整合,为开发人员提供了一致的开发体验。

强大的功能:Spring MVC 提供了许多功能,如表单处理、数据绑定、验证、国际化等,以帮助开发人员快速构建功能完善的 Web 应用程序。

良好的测试支持:Spring MVC 提供了各种测试工具和框架,使开发人员可以轻松编写单元测试和集成测试,确保应用程序的质量和稳定性。

核心组件
DispatcherServlet:作为前端控制器(Front Controller),负责接收所有的客户端请求,并将请求分发给相应的处理器(Handler)进行处理。

HandlerMapping:负责将请求映射到相应的处理器(Controller)上,根据请求的 URL 或其他条件决定调用哪个 Controller。

Controller:处理器,负责处理请求并生成响应。通常是一个带有 @Controller 或 @RestController 注解的类。

ModelAndView:用于封装处理器方法的处理结果数据和视图信息,包括模型数据和视图名称。

ViewResolver:负责将逻辑视图名称解析为实际的视图对象,通常是一个 JSP、Thymeleaf 或 FreeMarker 等模板引擎。

Interceptor:拦截器,负责在请求处理前后执行预处理和后处理操作,例如日志记录、权限检查等。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值