Spring Web model-view-controller (MVC) 是一个用于构建 J2EE Web 应用程序的开源框架。它基于 Model-View-Controller 设计模式,并实现了核心 Spring 框架的基本特性——依赖注入。它是围绕一个 DispatcherServlet 设计的,该 Servlet 将请求分发给处理器,并具有可配置的处理器映射、视图解析、语言环境和主题解析以及支持文件上传等功能。在 MVC 框架中,M 代表 Model(模型)—— 用于处理数据,V 代表 View(视图)—— 用于向用户展示数据,C 代表 Controller(控制器)—— 包含处理用户输入的实际业务逻辑。
Spring Framework 提供了一个名为 Model(I) 的接口来处理数据。它定义了模型属性的占位符,主要用于向模型添加属性。它也用于在 Spring MVC 应用程序的视图和控制器之间传输数据。Model 接口位于 org.springframework.ui 包中。它充当一个数据容器,包含应用程序的数据。存储的数据可以是任何形式,例如 String、Object、来自数据库的数据等。
Model(I) 中可用的方法
以下是 Model(I) 中可用的方法。
1) addAttribute
它将在提供的名称下添加指定的属性。
**Model addAttribute(String attributeName,**
** @Nullable**
** Object attributeValue)**
attributeName - 模型属性的名称 - 永远不能为 null
attributeValue - 模型属性的值 - 可以为 null
2) addAttribute
它使用生成的名称将指定的属性添加到此 Map 中。
**Model addAttribute(Object attributeValue)**
attributeValue - 模型属性的值 - 永远不能为 null
3) addAllAttributes
将指定 Collection 中的所有属性复制到此 Map 中,并对每个元素使用属性名称生成。
**Model addAllAttributes(Collection attributeValues)**
attributeValues - 模型属性值
4) addAllAttributes
将所提供的 Map 中的所有属性复制到此 Map 中。
**Model addAllAttributes(Map attributes)**
5) mergeAttributes
将所提供的 Map 中的所有属性复制到此 Map 中,现有的同名对象优先,也就是说,它们不会被替换。
**Model mergeAttributes(Map attributes)**
6) containsAttribute
检查此模型是否包含给定名称的属性?
**boolean containsAttribute(String attributeName)**
attributeName - 模型属性的名称 - 不能为 null
它返回值 true/false。
7) getAttribute
返回指定名称的属性值(如果存在)。
**@Nullable**
**Object getAttribute(String attributeName)**
attributeName - 模型属性的名称 - 不能为 null
它返回相应的属性值。如果没有,则返回 null。
8) asMap
将当前的模型属性集作为 Map 返回。
**Map asMap()**
Spring MVC 应用程序
我们将在 Spring Tool Suite (STS) 中创建一个简单的 Spring MVC 应用程序,演示如何使用 Model 对象来保存表单数据。
创建应用程序的步骤:
- 在 Spring Tool Suite 中创建一个 Spring MVC 项目。
- 在 STS 中,在根据开发人员的选择创建项目时,它将下载所有必需的 maven 依赖项、*.jar 和 lib 文件,并提供一个嵌入式服务器。
- 我们可以看到所有必需的依赖项都可在 ‘pom.xml‘ 文件中找到。
- 创建一个 Bean 类、Controller 类和 JSP 视图页面。
- 下面是创建 .java 和 .jsp 文件后 Spring MVC 项目的最终项目结构。
!Project StructureProject Structure
实现:
需要创建的文件如下:
- Details.java – Bean 类 – 定义字段的属性以及属性的 getter/setter 方法。
- DetailsController.java – Controller 类 – 处理用户请求并生成输出。
- details.jsp – 用于与用户交互以获取输入的 JSP 文件。
- detailsSummary.jsp – 用于在处理输入后向用户显示输出的 JSP 文件。
1) Details.java 文件:
Java
CODEBLOCK_331ee46c
‘Details‘ 类