SpringMvc day1031

news/2024/11/1 3:24:40/

ok了家人们今天继续学习SpringMvc,let‘s go?

2.9 静态资源放行

编写类继承于 WebMvcConfigurationSupport ,重写
addResourceHandlers 方法,在类上添加 @Configuration
解。
  • addResourceHandler映射的地址,/**表示包含子孙目录
  • addResourceLocations表示物理存在的地址
  • 四个静态目录都进行了映射
//当前类需要设置为配置类,并被扫描加载
@Configuration
public class SpringMvcSupport extends
WebMvcConfigurationSupport {
@Override
protected void
addResourceHandlers(ResourceHandlerRegistry
registry) {
//当访问/pages/xxxx时候,从/pages目录下查找
内容
registry.addResourceHandler("/pages/**").addRes
ourceLocations("/pages/");
registry.addResourceHandler("/js/**").addResour
ceLocations("/js/");
registry.addResourceHandler("/css/**").addResou
rceLocations("/css/");
registry.addResourceHandler("/plugins/**").addR
esourceLocations("/plugins/");
}
}

2.10 JSON数据参数传

  • 添加json数据转换相关坐标
因为 Springmvc 默认用
MappingJacksonHttpMessageConverter json 数据进行
转换,需要添加 jackson 依赖。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
  • 开启自动转换json数据的支持
@Configuration
@ComponentScan({"com.lzw"})
@EnableWebMvc //开启SpringMVC JSON数据进行自动类型转换
public class SpringMvcConfig {
}
  • @RequestBody
作用:形参注解,将请求体所包含的数据传递给请求参数
  • 传递JSON数组
<h2>JSON数据参数传递--传递JSON数组</h2>
<input type="button" value="点我"
onclick="fn01()"/>
<script src="/js/axios-0.18.0.js"></script>
<script>
function fn01(){
var arrayJson=["张三","李四","王五"];
axios.post("http://localhost:8080/demo10",array
Json).then(function(response){
console.log(response.data);
});
}
</script>
@RequestMapping("/demo10")
@ResponseBody
public String demo10(@RequestBody
List<String> list){
System.out.println(list);
return "success";
}
  • 传递JSON对象
json 数据与形参对象属性名相同,定义 POJO 类型形参即可接
收参数
<h2>JSON数据参数传递--传递JSON对象</h2>
<input type="button" value="点我"
onclick="fn02()"/>
<script src="/js/axios-0.18.0.js"></script>
<script>
function fn02(){
var objectJson=
{"id":1,"username":"张三","password":"123456"};
axios.post("http://localhost:8080/demo11",objec
tJson).then(function(response){
console.log(response.data);
});
}
</script>
@RequestMapping("/demo11")
@ResponseBody
public String demo11(@RequestBody User user)
{
System.out.println(user);
return "success";
}
  • 传递JSON对象数组
json 数组数据与集合泛型属性名相同,定义 List 类型形参即可

接收参数

<h2>JSON数据参数传递--传递JSON对象数组</h2>
<input type="button" value="点我"
onclick="fn03()"/>
javascript"><script src="/js/axios-0.18.0.js"></script>
<script>
function fn03(){
var objectArray=[
{"id":1,"username":"张三","password":"123456"},
{"id":2,"username":"李四","password":"123456"},
];
axios.post("http://localhost:8080/demo12",objec
tArray).then(function(response){
console.log(response.data);
});
}
</script>

 

@RequestMapping("/demo12")
@ResponseBody
public String demo12(@RequestBody List<User>
list){
System.out.println(list);
return "success";
}

2.11 日期类型参数传递

相同的日期数据,可能会采用不同的日期格式,
Java 默认的时间格式: yyyy/MM/dd HH:mm:ss
<h2>日期类型参数传递</h2>
<a href="http://localhost:8080/demo13?
id=1&birthday=2024/10/31">点我</a>
<a href="http://localhost:8080/demo13?
id=1&birthday=2024/10/31 12:12:12">点我</a>
<a href="http://localhost:8080/demo13?
id=1&birthday=2024-10-31">点我</a>

 

@RequestMapping("/demo13")
@ResponseBody
public String demo13(User user){
System.out.println(user);
return "success";
}
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Integer id;
private String username;
private String password;
//private Date birthday;
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;
}

2.12 内置类型转换器

@EnableWebMvc功能:根据类型匹配对应的类型转换器

        json → POJO

        String → Date

默认情况下 ,SpringMVC 已经实现一些数据类型自动转换。
内置转换器全都在:
        org.springframework.core.convert.support
java.lang.Boolean -> java.lang.String :
ObjectToStringConverter
java.lang.Character -> java.lang.Number :
CharacterToNumberFactory
java.lang.Character -> java.lang.String :
ObjectToStringConverter
java.lang.Enum -> java.lang.String :
EnumToStringConverter
java.lang.Number -> java.lang.Character :
NumberToCharacterConverter
java.lang.Number -> java.lang.Number :
NumberToNumberConverterFactory
java.lang.Number -> java.lang.String :
ObjectToStringConverter
java.lang.String -> java.lang.Boolean :
StringToBooleanConverter
java.lang.String -> java.lang.Character :
StringToCharacterConverter
java.lang.String -> java.lang.Enum :
StringToEnumConverterFactory
java.lang.String -> java.lang.Number :
StringToNumberConverterFactory
java.lang.String -> java.util.Locale :
StringToLocaleConverter
java.lang.String -> java.util.Properties :
StringToPropertiesConverter添加jackson的依赖
java.lang.String -> java.util.UUID :
StringToUUIDConverter
java.util.Locale -> java.lang.String :
ObjectToStringConverter
java.util.Properties -> java.lang.String :
PropertiesToStringConverter
java.util.UUID -> java.lang.String :
ObjectToStringConverter

 .响应

3.1 响应页面

@RequestMapping("/hello")
public String hello(){
System.out.println("Hello...");
return "success.jsp";
}

3.2 响应数据

3.2.1 具体操作
  • 添加jackson的依赖
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.0</version>
</dependency>
  • 开启自动转换json数据的支持
@Configuration
@ComponentScan({"com.lzw"})
@EnableWebMvc //开启SpringMVC JSON数据进行自动类
型转换
public class SpringMvcConfig {
}
  • @ResponseBody
表明响应的是数据本身而不是一个静态资源文件,不做页面跳
转。将方法返回的对象序列化为 JSON XML 格式的数据发
送给客户端。在前后端分离的项目中使用!
3.2.2 响应文本数据
<h2>响应文本数据</h2>
<a href="http://localhost:8080/demo13">点我
</a>
@RequestMapping(value = "/demo13",produces =
"text/html;charset=utf-8")
@ResponseBody
public String demo13(User user){
System.out.println(user);
return "成功";
}
3.2.3 响应JSON数据
<h2>响应JSON对象</h2>
<a href="http://localhost:8080/demo14">点我
</a>
<h2>响应JSON数组</h2>
<a href="http://localhost:8080/demo15">点我
</a>
@RequestMapping(value = "/demo14",produces =
"application/json;charset=utf-8")
@ResponseBody
public User demo14(){
User user=new User(1,"张三","123456",new
Date());
return user;
}
@RequestMapping(value = "/demo15",produces =
"application/json;charset=utf-8")
@ResponseBody
public List<User> demo15(){
List<User> list=new ArrayList<>();
User u01=new User(1,"张三","123456",new
Date());
User u02=new User(2,"李四","123456",new
Date());
list.add(u01);
list.add(u02);
return list;
}

3.3 响应统一数据格式

<h2>响应统一状态码</h2>
<input type="button" value="点我"
onclick="fn04()"/>
<script src="/js/axios-0.18.0.js"></script>
<script>
function fn04(){
axios.post("http://localhost:8080/demo16").then
(function(response){
console.log(response);
console.log(response.data);
console.log(response.data.code);
console.log(response.data.msg);
console.log(response.data.data);
});
}
</script>
@RequestMapping(value = "/demo16",produces =
"application/json;charset=utf-8")
@ResponseBody
public Result demo16(){
List<User> list=new ArrayList<>();
User u01=new User(1,"张三","123456",new
Date());
User u02=new User(2,"李四","123456",new
Date());
list.add(u01);
list.add(u02);
Result result=new Result(20000,"查询成
功",list);
return result;
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private int code;//响应状态码
private String msg;//响应消息
private Object data;//响应数据
}

ok了家人们,明天见 byebye


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

相关文章

使用GDAL库的ogr2ogr将GeoJSON数据导入到PostgreSql中

数据下载 数据下载地址&#xff1a;https://datav.aliyun.com/portal/school/atlas/area_selector 我这里下载全国所有城市的数据进行导入 下载安装GDAL 以下是安装 ogr2ogr&#xff08;GDAL 工具集的一部分&#xff09;的步骤&#xff0c;适用于 Windows、macOS 和 Linux 系…

通过secret_id和role_id连接Vault

怎么生成secret_id 和role_id 通过这篇文章可以找到&#xff1a; Jenkins pipeline 怎么连接Vault_jenkinsfile withvault-CSDN博客 当你拥有了secret_id 和role_id&#xff0c;你就可以通过以下代码来进行连接&#xff1a; VaultLoginByApprole(){role_id$1secret_id$2expo…

C语言数据结构学习:单链表

C语言数据结构学习&#xff1a; 汇总入口&#xff1a;C语言数据结构学习&#xff1a;[汇总] 单链表 1. 基础了解 学习之前先了解线性表、顺序表和链表 线性表的两个特点&#xff1a; 有限的序列序列中的每一个元素都有唯一的前驱和后继&#xff0c;除了开头和结尾两个节点 …

「Mac畅玩鸿蒙与硬件8」鸿蒙开发环境配置篇8 - 应用依赖与资源管理

本篇将介绍如何在 HarmonyOS 项目中高效管理资源文件和依赖&#xff0c;以确保代码结构清晰并提升应用性能。资源管理涉及图片、字符串、多语言文件等&#xff0c;通过优化文件加载和依赖管理&#xff0c;可以显著提升项目的加载速度和运行效率。 关键词 资源管理应用依赖优化…

【格言分享】程序员的经典名言解读

上一期文章我们分享了一些程序员的经典名言,每一句都蕴含着深刻的道理。 接下来就给大家一个一个分析一下 这些格言确实捕捉到了编程和软件开发的精髓,每一条都蕴含着丰富的经验和智慧。下面我将逐一解释这些格言,并分享一些我的看法。 C程序员永远不会灭亡。他们只是cast…

day03-LogStash

LogStash环境搭建 1.下载Logstash [10:17:18 rootelk2:/usr/local]#wget http://192.168.13.253/Resources/ElasticStack/softwares/logstash-7.17.23-amd64.deb2.安装Logstash [10:17:35 rootelk2:/usr/local]#dpkg -i logstash-7.17.23-amd64.deb 3.创建软连接&#xff0…

python psutil 模块概述

文章目录 psutil 模块概述支持的系统安装 psutil 使用示例CPU 信息获取内存信息获取磁盘信息获取网络信息获取 进程管理功能查看系统进程获取进程详情示例脚本&#xff1a;监控系统资源 总结核心功能使用场景主要优点 psutil 模块概述 psutil 是一个强大的跨平台 Python 库&am…

无人机之集群控制方法篇

无人机的集群控制方法涉及多个技术和策略&#xff0c;以确保多架无人机能够协同、高效地执行任务。以下是一些主要的无人机集群控制方法&#xff1a; 一、编队控制方法 领航-跟随法&#xff08;Leader-Follower&#xff09; 通过设定一架无人机作为领航者&#xff08;长机&am…