【Java开发】Java热门框架深入开发第8篇:三、REST风格,3 日期类型参数传递【重点】,4 响应【附代码文档】
🏆🏆🏆教程全知识点简介:学习目标 一、Spring简介 2 初识Spring 3 Spring体系结构 二、IOC和DI入门案例【重点】 五、Bean的生命周期【了解】 问题导入 1 生命周期相关概念介绍 2 代码演示 3 Bean销毁时机 六、依赖注入(DI配置) 1 依赖注入方式【重点】 2 依赖自动装配【理解】 3 集合注入 今日目标 一、第三方资源配置管理 1 管理DataSource连接池对象 2 加载properties属性文件【重点】 四、Spring整合其他技术【重点】 二、AOP案例 1 案例-测量业务层接口万次执行效率 2 AOP切入点数据获取 2 Spring事务角色【理解】 二、请求与响应 1 请求映射路径【重点】 2 请求参数 3 日期类型参数传递【重点】 4 响应 三、REST风格 1 REST简介 2 RESTful入门案例 3 REST快速开发【重点】 今日内容 一、SSM整合【重点】 1 SSM整合配置 三、异常处理器【理解】 1 异常介绍 2 异常处理器 一、分模块开发与设计 1. 分模块开发的意义 模块拆分原则 2. 分模块开发(模块拆分) 二、依赖管理 1. 依赖传递 2. 可选依赖 4 可选依赖和排除依赖的区别 三、聚合与继承 1. 聚合工程 3. 继承关系 5. 聚合与继承的区别 四、属性管理 1. 属性 2. 版本管理 五、多环境配置与应用 1. 多环境配置作用 2. 跳过测试(了解) 六、私服 2. 私服仓库分类 3. 资源上传与下载 附件1:POM文件总体配置说明 一、MyBatisPlus简介 1. 入门案例 二、标准数据层开发 2. Lombok插件介绍 四、DML编程控制 1. id生成策略控制(Insert) 2. 多记录操作(批量Delete/Select) 3. 逻辑删除(Delete/Update) 4. 乐观锁(Update)
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/459522 中查看
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/459837 中查看
📚📚👉👉👉本站这篇博客: https://bbs.huaweicloud.com/blogs/459837 中查看
✨ 本教程项目亮点
🧠 知识体系完整:覆盖从基础原理、核心方法到高阶应用的全流程内容
💻 全技术链覆盖:完整前后端技术栈,涵盖开发必备技能
🚀 从零到实战:适合 0 基础入门到提升,循序渐进掌握核心能力
📚 丰富文档与代码示例:涵盖多种场景,可运行、可复用
🛠 工作与学习双参考:不仅适合系统化学习,更可作为日常开发中的查阅手册
🧩 模块化知识结构:按知识点分章节,便于快速定位和复习
📈 长期可用的技术积累:不止一次学习,而是能伴随工作与项目长期参考
🎯🎯🎯全教程总章节

🚀🚀🚀本篇主要内容
3 日期类型参数传递【重点】
问题导入
@DateTimeFormat注解的作用是什么?
3.1 代码演示
- 日期类型数据基于系统不同格式也不尽相同 2088-08-18 2088/08/18 08/18/2088
- 接收形参时,根据不同的日期格式设置不同的接收方式

//日期参数 8:08:08
//使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
@RequestMapping("/dataParam")
@ResponseBody
public String dataParam(Date date,
@DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
@DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
System.out.println("参数传递 date ==> "+date);
System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
return "{'module':'data param'}";
}
3.2 @DateTimeFormat注解介绍
- 名称:@DateTimeFormat
- 类型:==形参注解==
- 位置:SpringMVC控制器方法形参前面
-
作用:设定日期时间型数据格式
-
属性:pattern:指定日期时间格式字符串
3.3 工作原理
- 其内部依赖Converter接口
public interface Converter<S, T> {
@Nullable
T convert(S var1);
}
- 请求参数年龄数据(String→Integer)
- json数据转对象(json → POJO)
- 日期格式转换(String → Date)
3.4 注意事项
传递日期类型参数必须在配置类上使用@EnableWebMvc注解。其功能之一:根据类型匹配对应的类型转换器。
4 响应
问题导入
如何响应json数据?
4.1响应页面【了解】
@Controller
public class UserController {
//响应页面/跳转页面
//返回值为String类型,设置返回值为页面名称,即可实现页面跳转
@RequestMapping("/toJumpPage")
public String toJumpPage(){
System.out.println("跳转页面");
return "page.jsp";
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h2>Hello Spring MVC!</h2>
</body>
</html>
4.2 文本数据【了解】
//响应文本数据
//返回值为String类型,设置返回值为任意字符串信息,即可实现返回指定字符串信息,需要依赖@ResponseBody注解
@RequestMapping("/toText")
@ResponseBody
public String toText(){
System.out.println("返回纯文本数据");
return "response text";
}
4.3 json数据【重点】
//响应POJO对象
//返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
@RequestMapping("/toJsonPOJO")
@ResponseBody
public User toJsonPOJO(){
System.out.println("返回json对象数据");
User user = new User();
user.setName("itcast");
user.setAge(15);
return user;
}
//响应POJO集合对象
//返回值为集合对象,设置返回值为集合类型,即可实现返回对应集合的json数组数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
@RequestMapping("/toJsonList")
@ResponseBody
public List<User> toJsonList(){
System.out.println("返回json集合数据");
User user1 = new User();
user1.setName("传智播客");
user1.setAge(15);
User user2 = new User();
user2.setName("黑马程序员");
user2.setAge(12);
List<User> userList = new ArrayList<User>();
userList.add(user1);
userList.add(user2);
return userList;
}
==注意:需要添加jackson-databind依赖以及在SpringMvcConfig配置类上添加@EnableWebMvc注解==
三、REST风格
1 REST简介
问题导入
Rest风格使用了几种请求方式定义访问行为?
1.1 REST介绍
- REST(Representational State Transfer),表现形式状态转换
-
传统风格资源描述形式
-
REST风格描述形式
-
优点:
- 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
- 书写简化
1.2 RESTful介绍
- 按照REST风格访问资源时使用==行为动作==区分对资源进行了何种操作 查询全部用户信息 (查询) 查询指定用户信息(查询) 添加用户信息(新增/保存) 修改用户信息(修改/更新) 删除用户信息(删除)
- 根据REST风格对资源进行访问称为RESTful
1.3 注意事项
- 上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范
- 描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users、books、accounts……
2 RESTful入门案例
问题导入
Rest风格如何通过路径传递参数?
2.1 快速入门
做法:在Controller中定义方法时设定"http请求动作(请求方式)"和"设定请求参数(路径变量)"
@Controller
public class UserController {
//设置当前请求方法为POST,表示REST风格中的添加操作
@RequestMapping(value = "/users",method = RequestMethod.POST)
@ResponseBody
public String save(){
System.out.println("user save...");
return "{'module':'user save'}";
}
//设置当前请求方法为DELETE,表示REST风格中的删除操作
//@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
@RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
@ResponseBody
public String delete(@PathVariable Integer id){
System.out.println("user delete..." + id);
return "{'module':'user delete'}";
}
//设置当前请求方法为PUT,表示REST风格中的修改操作
@RequestMapping(value = "/users",method = RequestMethod.PUT)
@ResponseBody
public String update(@RequestBody User user){
System.out.println("user update..."+user);
return "{'module':'user update'}";
}
//设置当前请求方法为GET,表示REST风格中的查询操作
//@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
@RequestMapping(value = "/users/{id}" ,method = RequestMethod.GET)
@ResponseBody
public String getById(@PathVariable Integer id){
System.out.println("user getById..."+id);
return "{'module':'user getById'}";
}
//设置当前请求方法为GET,表示REST风格中的查询操作
@RequestMapping(value = "/users",method = RequestMethod.GET)
@ResponseBody
public String getAll(){
System.out.println("user getAll...");
return "{'module':'user getAll'}";
}
}
2.2 @PathVariable介绍
- 名称:@PathVariable
- 类型:形参注解
- 位置:SpringMVC控制器方法形参定义前面
- 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

2.3 @RequestBody、@RequestParam、@PathVariable区别和应用
- 区别 @RequestParam用于接收url地址传参或表单传参 @RequestBody用于接收json数据 @PathVariable用于接收路径参数,使用{参数名称}描述路径参数
- 应用 后期开发中,发送请求参数超过1个时,以json格式为主,@RequestBody应用较广 如果发送非json格式数据,选用@RequestParam接收请求参数 采用RESTful进行开发,当参数数量较少时,例如1个,可以采用@PathVariable接收请求路径变量,通常用于传递id值
3 REST快速开发【重点】
3.1 代码中的问题

以上截图中的代码和 之前写的UserController中的方法类似,其中图中两个方法都有三处是有问题的,可以进行优化。存在的问题如下:
问题1:每个方法的@RequestMapping注解中都定义了访问路径/books,重复性太高。
问题2:每个方法的@RequestMapping注解中都要使用method属性定义请求方式,重复性太高。
问题3:每个方法
🚀✨ (未完待续)项目系列下一章
📚下一篇 将进入更精彩的环节! 🔔 记得收藏 & 关注,第一时间获取更新! 🍅 一起见证整个系列逐步成型的全过程。
- 点赞
- 收藏
- 关注作者
评论(0)