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

相关推荐
shuair1 小时前
idea 2023.3.7常用插件
java·ide·intellij-idea
小安同学iter2 小时前
使用Maven将Web应用打包并部署到Tomcat服务器运行
java·tomcat·maven
Yvonne9782 小时前
创建三个节点
java·大数据
不会飞的小龙人3 小时前
Kafka消息服务之Java工具类
java·kafka·消息队列·mq
是小崔啊3 小时前
java网络编程02 - HTTP、HTTPS详解
java·网络·http
brevity_souls4 小时前
Spring Boot 内置工具类
java·spring boot
小钊(求职中)4 小时前
Java开发实习面试笔试题(含答案)
java·开发语言·spring boot·spring·面试·tomcat·maven
shix .4 小时前
什么是tomcat
java·tomcat
java技术小馆4 小时前
Deepseek整合SpringAI
java·spring cloud
天荒地老笑话么4 小时前
Mac安装配置Tomcat 8
java·macos·tomcat