Spring MVC 简介

目录

  • [1. 什么是MVC](#1. 什么是MVC)
  • [2. 什么是SpringMVC](#2. 什么是SpringMVC)

1. 什么是MVC

MVC是一种常用的软件架构模式。可以看作是一种设计模式,也可以看作是一种软件框架。经典MVC模式中,M是指模型,V是视图,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。最典型的MVC就是JSP + servlet + javabean的模式。

1)模型(Model):模型是应用程序的核心,它代表应用程序的数据和业务逻辑。模型通常包括数据访问对象、实体类和业务逻辑类等。模型的主要职责是处理数据和提供业务逻辑,但它并不知道任何关于用户界面或控制器的信息。

2)视图(View):视图是用户界面的呈现方式,它通常由HTML、CSS和JavaScript等技术实现。视图负责显示数据,但不处理数据或业务逻辑。视图是与模型和控制器分离的,它只是显示数据,不会对数据进行任何修改。

3)控制器(Controller):控制器是应用程序的协调者,它负责处理用户输入并更新模型和视图。控制器接收用户输入并根据输入调用相应的模型和视图。控制器是模型和视图之间的桥梁,它将用户输入转换为模型的操作,并将模型的结果传递给视图进行显示。

使用MVC结构的好处:

1)分离关注点:MVC模式通过将应用程序分成三个组成部分,从而实现了业务逻辑、用户界面和用户输入的分离。这种分离使得代码更易于维护和重用。

2)可测试性:MVC模式使得应用程序的各个组成部分可以独立测试。模型和视图可以分别测试,而控制器也可以单独测试。

3)可扩展性:MVC模式使得应用程序更易于扩展。例如,如果需要添加新的视图,可以很容易地创建一个新的视图类并将其与现有的控制器和模型集成。

4)可重用性:MVC模式使得应用程序的各个组成部分可以重用。例如,可以使用相同的模型和控制器来支持不同的视图。

2. 什么是SpringMVC

常见的服务器端MVC框架有:Struts、Spring MVC、ASP.NET MVC、Zend Framework、JSF、Tapestry、Grails等,他们都是MVC设计模式的具体实现。而Spring MVC就是MVC设计模式在Spring中的实现。Spring MVC采用了松散耦合的可插拔组件结构,比其他的MVC框架更具有灵活性和扩展性,Spring MVC通过使用一套注解,使一个Java类成为前端控制器(Controller),不需要实现任何接口,同时,Spring MVC支持RES形式的URL请求,除此之外,Spring MVC在数据绑定、视图解析、本地化处理及静态资源处理上都有许多不俗的表现。Spring MVC围绕DispatcherServlet(前端控制器)为中心展开,DispatcherServlet(前端控制器)是Spring MVC的中枢,和MVC的思想一样,它负责从视图获取用户请求并且分派给相应的处理器处理,并决定用哪个视图去把数据呈现给给用户。

Spring MVC的特点:

  • 让我们能非常简单的设计出干净的Web层和薄薄的Web层;
  • 进行更简洁的Web层的开发;
  • 天生与Spring框架集成(如IoC容器、AOP等);
  • 提供强大的约定大于配置的契约式编程支持;
  • 能简单的进行Web层的单元测试;
  • 支持灵活的URL到页面控制器的映射;
  • 非常容易与其它视图技术集成,如Velocity、FreeMarker等,因为模型数据不放在特定的API里,而是放在一 个Model里(Map数据结构实现,因此很容易被其他框架使用);
  • 非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的API;
  • 提供一套强大的JSP标签库,简化JSP开发;
  • 支持灵活的本地化、主题等解析;
  • 更加简单的异常处理;
  • 对静态资源的支持; 支持Restful风格。

SpringMVC官方文档:

https://docs.spring.io/spring-framework/reference/web/webmvc.html

相关推荐
憨子周1 小时前
2M的带宽怎么怎么设置tcp滑动窗口以及连接池
java·网络·网络协议·tcp/ip
霖雨2 小时前
使用Visual Studio Code 快速新建Net项目
java·ide·windows·vscode·编辑器
SRY122404192 小时前
javaSE面试题
java·开发语言·面试
Fiercezm3 小时前
JUC学习
java
无尽的大道3 小时前
Java 泛型详解:参数化类型的强大之处
java·开发语言
ZIM学编程3 小时前
Java基础Day-Sixteen
java·开发语言·windows
我不是星海3 小时前
1.集合体系补充(1)
java·数据结构
P.H. Infinity3 小时前
【RabbitMQ】07-业务幂等处理
java·rabbitmq·java-rabbitmq
爱吃土豆的程序员3 小时前
java XMLStreamConstants.CDATA 无法识别 <![CDATA[]]>
xml·java·cdata
2401_857610034 小时前
多维视角下的知识管理:Spring Boot应用
java·spring boot·后端