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这种分层开发,体现了面向对象各司其职的设计思想,也更加有利于后续的项目维护(修改)。
为什么要基于Spring Framework
使用Spring中的特性,岂不美哉。
- 通过工厂(容器)创建对象,解耦合 (IOC DI)。
- 通过AOP的方式,为目标类(原始类),增加额外功能。
- 方便与第三方框架的集成
- MyBatis
- JPA
- MQ
原有MVC开发中控制器存在的问题
原有控制器的实现技术
- Servlet [基于Java Model2模式]
- Struts2中的Action
Servlet实现控制器存在的问题
- 控制器的核心作用
由三部分组成:接受用户的请求(接参),调用业务功能(Service),并根据处理结果控制程序的运行流程。
很好理解,从client接参,通过Service处理,处理完根据不同的布尔值确定要跳转到哪个jsp。核心代码为:
1. 接受client请求参数
2. 调用业务对象(Service)
3. 流程跳转(页面跳转)
三步都有写的不好的地方,耦合和冗余等问题:
以上问题在使用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,再记一次:
- Spring 框架就像一个家族,有众多衍生产品例如 boot、security、jpa等等。但他们的基础都是Spring的ioc、aop等. ioc 提供了依赖注入的容器, aop解决了面向横切面编程,然后在此两者的基础上实现了其他延伸产品的高级功能。
- SpringMVC主要解决WEB开发的问题,是基于Servlet 的一个MVC框架,通过XML配置(可用注解替换,SpringBoot的引子),统一开发前端视图和后端逻辑。
- 由于Spring的配置非常复杂,各种XML、JavaConfig、servlet处理起来比较繁琐,为了简化开发者的使用,从而创造性地推出了springBoot框架,默认优于配置,简化了springMvc的配置流程;但区别于springMvc的是,springBoot专注于单体微服务接口开发,和前端解耦,虽然springBoot也可以做成springMvc前后台一起开发,但是这就有点不符合springBoot框架的初衷了。
- 对于springCloud框架来说,它和springBoot一样,注重的是微服务的开发,但是springCloud更关注的是全局微服务接口的整合和管理,相当于管理多个springBoot框架的单体微服务。