Spring缕完了,正好看到鸽王更新了SpringMVC的视频,时间不长,没事儿来看看回顾下,希望年前能看完。

这节简单做一些SpringMVC的概念记录,做个备忘。

一、什么是SpringMVC
概念: SpringMVC是基于Spring Framework衍生而来的一个MVC框架。主要解决了原有MVC框架开发过程中,控制器(Controller)的问题。

比如以前用Servlet或者Struts2的Action作为控制器都会有使用配置文件,无法使用注解编程的问题,还有Servlet中的代码冗余、解耦问题等;使用SpringMVC可以解决上述Controller的问题。当然SpringMVC也是一个MVC框架

1. MVC是一个架构思想,在JavaEE开发中多用于Web开发。
2. 应用MVC架构思想开发应用,会把一个项目划分为了3个层次,M(Model) 模型层,V(View) 视图层,C(Controller) 控制层。
		View       JSP
		Model      Service+DAO
		Controller Servlet
3. MVC这种分层开发,体现了面向对象各司其职的设计思想,也更加有利于后续的项目维护(修改)。 

17.PNG

18.PNG

为什么要基于Spring Framework

使用Spring中的特性,岂不美哉。

- 通过工厂(容器)创建对象,解耦合 (IOC DI)。
- 通过AOP的方式,为目标类(原始类),增加额外功能。
- 方便与第三方框架的集成
  - MyBatis
  - JPA
  - MQ

原有MVC开发中控制器存在的问题

原有控制器的实现技术

  • Servlet [基于Java Model2模式]
  • Struts2中的Action

Servlet实现控制器存在的问题

  • 控制器的核心作用

由三部分组成:接受用户的请求(接参),调用业务功能(Service),并根据处理结果控制程序的运行流程。

1.PNG

很好理解,从client接参,通过Service处理,处理完根据不同的布尔值确定要跳转到哪个jsp。核心代码为:

1. 接受client请求参数
2. 调用业务对象(Service)
3. 流程跳转(页面跳转)

2.PNG

三步都有写的不好的地方,耦合和冗余等问题:

3.PNG

4.PNG

5.PNG

以上问题在使用SpringMVC后会逐一解决。

二、SpringMVC的开发

SpringMVC的三种开发模式:

传统视图开发
  1. 通过作用域(request,session)进行数据的传递。
  2. 通过视图层技术进行数据的展示(JSP,FreeMarker,Thymeleaf)。
前后端分离开发
  1. 多种新的请求发送方式
  2. Restful的访问
  3. 通过HttpMessageConverter进行数据响应
Spring5 WebFlux开发
  1. 替换传统JavaWeb开发的一种新的Web开发方式。
  2. 通过NettyServer,进行Web通信。

控制器Controller的开发:

1. 接受client请求参数
2. 调用业务对象
3. 流程跳转
三、引申概念:Spring、SpringMVC、SpringBoot、SpringCloud四者的区别关系

我感觉以前好像记过一次,不过无所谓,正好刚缕完Spring,再记一次:

  1. Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring的ioc、aop等. ioc 提供了依赖注入的容器, aop解决了面向横切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能。
  2. SpringMVC主要解决WEB开发的问题,是基于Servlet 的一个MVC框架,通过XML配置(可用注解替换,SpringBoot的引子),统一开发前端视图和后端逻辑。
  3. 由于Spring的配置非常复杂,各种XML、JavaConfig、servlet处理起来比较繁琐,为了简化开发者的使用,从而创造性地推出了springBoot框架,默认优于配置,简化了springMvc的配置流程;但区别于springMvc的是,springBoot专注于单体微服务接口开发,和前端解耦,虽然springBoot也可以做成springMvc前后台一起开发,但是这就有点不符合springBoot框架的初衷了。
  4. 对于springCloud框架来说,它和springBoot一样,注重的是微服务的开发,但是springCloud更关注的是全局微服务接口的整合和管理,相当于管理多个springBoot框架的单体微服务。

标题:SpringMVC(0)
作者:jyl
地址:http://jinyunlong.xyz/articles/2022/01/06/1641460982208.html