SpringMVC框架面试专题(初级-中级)-第十节

news/2024/11/7 10:40:31/

欢迎大家一起探讨~如果可以帮到大家请为我点赞关注哦~

截止到本节关于SpringMVC的内容已经更新完毕,后续会更新SpringBoot框架的面试题;大家在背题的时候切记不要死记硬背,需要理解 这是什么?有什么操作?为什么这么做?按照这个思路去背题才能把知识点吸收变成自己的; (面试题中会偶尔加入一些之前已经有过的题便于大家前后知识点进行结合)

问题:

1.Spring MVC框架中的JSON处理是什么?请举例说明如何使用JSON处理。

解析:

Spring MVC框架中的JSON处理是指将Java对象序列化为JSON字符串或将JSON字符串反序列化为Java对象的过程,通常用于前后端数据交互和API接口的实现。

JSON处理可以使用Spring自带的Jackson库来实现,该库提供了丰富的API和注解,可以灵活地控制序列化和反序列化的过程。

下面是一个简单的例子,演示如何使用JSON处理:

@RestController
@RequestMapping("/user")
public class UserController {@PostMapping("/add")public String addUser(@RequestBody User user) {// 业务逻辑处理return "success";}
}public class User {private String username;private int age;// getter和setter方法省略
}

在上面的例子中,我们定义了一个UserController类,其中包含了一个addUser方法,该方法接收一个User类型的参数,用于新增用户信息。

为了支持使用JSON格式的请求体,我们需要在pom.xml文件中添加Jackson库的依赖,如下所示:

<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.version}</version>
</dependency>

其中,${jackson.version}是Jackson库的版本号,可以根据具体需求进行配置。

接下来,我们需要在WebMvcConfigurer中注册Jackson库的消息转换器,如下所示:

@Configuration
public class WebMvcConfiguration implements WebMvcConfigurer {@Overridepublic void configureMessageConverters(List<HttpMessageConverter<?>> converters) {converters.add(new MappingJackson2HttpMessageConverter());}
}

在上面的代码中,我们实现了WebMvcConfigurer接口,重写了configureMessageConverters方法,将MappingJackson2HttpMessageConverter添加到消息转换器列表中。

最后,在发起请求时,我们需要将请求体中的数据序列化为JSON字符串,并设置Content-Type为application/json,如下所示:

{"username": "Alice","age": 20
}

这样,在接收到请求时,Spring MVC框架会自动将JSON字符串反序列化为User对象,并将其作为参数传递给addUser方法。

问题:

2.Spring MVC框架中的Web数据绑定是什么?请举例说明如何使用Web数据绑定。

解析:

Spring MVC框架中的Web数据绑定是指将HTTP请求中的参数值绑定到Java对象的过程,通常用于处理表单提交等场景。

Web数据绑定可以使用Spring自带的数据绑定机制来实现,该机制支持多种数据类型和格式,并提供了丰富的API和注解,可以灵活地控制绑定的过程。

下面是一个简单的例子,演示如何使用Web数据绑定:

@RestController
@RequestMapping("/user")
public class UserController {@PostMapping("/add")public String addUser(User user) {// 业务逻辑处理return "success";}
}public class User {private String username;private int age;// getter和setter方法省略
}

在上面的例子中,我们定义了一个UserController类,其中包含了一个addUser方法,该方法接收一个User类型的参数,用于新增用户信息。

为了支持Web数据绑定,我们需要在User类中添加相应的注解,如下所示:

public class User {@NotEmptyprivate String username;@Min(0)@Max(150)private int age;// getter和setter方法省略
}

在上面的代码中,我们使用了javax.validation.constraints包下的注解,分别对username和age进行了非空和范围的限制。

接下来,在发起请求时,我们需要将参数值以表单形式提交,并设置Content-Type为application/x-www-form-urlencoded,如下所示:

<form action="/user/add" method="post"><input type="text" name="username" value="Alice"><input type="number" name="age" value="20"><button type="submit">提交</button>
</form>

这样,在接收到请求时,Spring MVC框架会自动将请求参数值绑定到User对象中,并执行相应的验证规则。如果验证失败,则会返回相应的错误信息;如果验证成功,则会将绑定后的User对象作为参数传递给addUser方法。

需要注意的是,如果要使用Web数据绑定,也需要在pom.xml文件中添加相应的依赖,如下所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

这是因为Spring Boot默认并不包含Web数据绑定的依赖,需要手动添加。

问题:

3.Spring MVC框架中的请求参数解析是什么?请举例说明如何使用请求参数解析。

解析:

Spring MVC框架中的请求参数解析是指将HTTP请求中的参数值解析为Java对象的过程,通常用于处理表单提交等场景。

请求参数解析可以使用Spring自带的参数解析机制来实现,该机制支持多种数据类型和格式,并提供了丰富的API和注解,可以灵活地控制解析的过程。

下面是一个简单的例子,演示如何使用请求参数解析:

@RestController
@RequestMapping("/user")
public class UserController {@PostMapping("/add")public String addUser(String username, int age, Address address) {// 业务逻辑处理return "success";}
}public class Address {private String city;private String street;// getter和setter方法省略
}

在上面的例子中,我们定义了一个UserController类,其中包含了一个addUser方法,该方法接收三个参数,分别为字符串类型的username、整型的age和自定义类型的Address。

为了支持请求参数解析,我们需要在Address类中添加相应的注解,如下所示:

public class Address {@NotEmptyprivate String city;@NotEmptyprivate String street;// getter和setter方法省略
}

在上面的代码中,我们使用了javax.validation.constraints包下的注解,分别对city和street进行了非空的限制。

接下来,在发起请求时,我们需要将参数值以表单形式提交,并设置Content-Type为application/x-www-form-urlencoded,如下所示:

<form action="/user/add" method="post"><input type="text" name="username" value="Alice"><input type="number" name="age" value="20"><input type="text" name="address.city" value="Shanghai"><input type="text" name="address.street" value="Nanjing Road"><button type="submit">提交</button>
</form>

这样,在接收到请求时,Spring MVC框架会自动将请求参数值解析为Java对象,并执行相应的验证规则。如果验证失败,则会返回相应的错误信息;如果验证成功,则会将解析后的Java对象作为参数传递给addUser方法。

需要注意的是,如果要使用请求参数解析,也需要在pom.xml文件中添加相应的依赖,如下所示:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId>
</dependency>

这是因为Spring Boot默认并不包含请求参数解析的依赖,需要手动添加。


http://www.ppmy.cn/news/99984.html

相关文章

跑通NeRF-SLAM代码记录

前言 Install 原文章github链接 下载代码 git clone https://github.com/ToniRV/NeRF-SLAM.git --recurse-submodules git submodule update --init --recursive因为有相关依赖&#xff0c;所以尽量使用命令下载代码。 2. 新建nerf-slam环境&#xff0c;github上也没提到p…

OpenCV基础操作(5)图像平滑、形态学转换、图像梯度

import numpy as np import cv2 as cv from matplotlib import pyplot as plt一、图像平滑 1、2D卷积 我们可以对 2D 图像实施低通滤波&#xff08;LPF&#xff09;&#xff0c;高通滤波&#xff08;HPF&#xff09;等。 LPF 帮助我们去除噪音&#xff0c;模糊图像。HPF 帮助…

我用GPT写了一个关于GPT的文章,大家看看写的如何

声明&#xff1a;以下内容来自GPT-3.5大模型&#xff08;图片除外&#xff09; 目录 I. 引言 1.1 研究背景和意义 1.2 现有研究综述 II. ChatGPT技术介绍 2.1 ChatGPT技术原理 2.2 ChatGPT技术优势 III. ChatGPT技术在智能客服中的应用和挑战 3.1 ChatGPT技术在智能客…

TOWER 成就徽章 NFT 系列介绍——TOWER 生态系统的第一个灵魂通证(SBT)

2022 年 7 月&#xff0c;团队推出了成就徽章 NFT 系列&#xff0c;记录每个成员在 TOWER 生态系统中的努力。这是第一个不可转让的灵魂 NFT 系列&#xff08;SBT&#xff09;&#xff0c;代表了每个玩家的独特身份。 关于灵魂通证&#xff08;SBT&#xff09; 以太坊联合创始人…

剑指 Offer 12 矩阵中的路径

题目&#xff1a; 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff0c;其中“相邻”单元格是那…

Window的创建

Window的创建 上一篇说到了Window和WindowManager的关系并且讲述了WindowManager如何添加Window与Window内部的三个方法的实现 这篇主要讲几个常见的Window的创建比如Activity,Dialog和Toast 其中Activity属于应用Window Dialog属于子Window Toast属于系统Window z-order…

开闭原则正确姿势, 使用AOP优雅的记录日志, 非常的哇塞

&#x1f473;我亲爱的各位大佬们好&#x1f618;&#x1f618;&#x1f618; ♨️本篇文章记录的为 JDK8 新特性 Stream API 进阶 相关内容&#xff0c;适合在学Java的小白,帮助新手快速上手,也适合复习中&#xff0c;面试中的大佬&#x1f649;&#x1f649;&#x1f649;。 …

【Accessors注解】记录使用 lombook 注解姿势不对导致无法使用 BeanCopier 复制属性的问题

目录 背景定位问题分析原因为什么 BeanUtils.copyProperties() 可以为什么 BeanCopier 不可以 总结 背景 前几天看同事写的代码&#xff0c;发现不同分层对象之间的转换用的 spring 自带的 BeanUtils.copyProperties()&#xff0c;并且复制的还是对象集合。一时技痒&#xff0…