使用java的spring boot创建RESTful风格的服务端,并创建客户端程序。服务器端使用post注解资源接口用于增加一个学生的学号,姓名,出生年月等信息;使用get注解资源接口用于获得所有学生的信息;使用get注解的资源接口用于获得指定学号的学生信息。客户端访问服务,实现增加多个学生的信息,并输出所有学生的信息,以及指定学号的学生信息。

时间: 2024-01-22 13:21:16 浏览: 29
首先,我们需要创建一个Spring Boot项目,可以使用IDE工具如Eclipse或IntelliJ IDEA来创建项目。在创建项目时勾选Web依赖项。 接下来,我们需要创建一个学生实体类,包含学号、姓名和出生年月等信息。 ```java public class Student { private int id; private String name; private LocalDate dateOfBirth; // getters and setters } ``` 然后,我们需要创建一个控制器类,用于处理HTTP请求和响应。在控制器类中,我们需要定义三个方法,用于处理增加学生、获取所有学生和获取指定学生的请求。 ```java @RestController public class StudentController { private List<Student> students = new ArrayList<>(); @PostMapping("/students") public ResponseEntity<Student> addStudent(@RequestBody Student student) { students.add(student); return ResponseEntity.ok(student); } @GetMapping("/students") public ResponseEntity<List<Student>> getAllStudents() { return ResponseEntity.ok(students); } @GetMapping("/students/{id}") public ResponseEntity<Student> getStudentById(@PathVariable int id) { Optional<Student> student = students.stream().filter(s -> s.getId() == id).findFirst(); if (student.isPresent()) { return ResponseEntity.ok(student.get()); } else { return ResponseEntity.notFound().build(); } } } ``` 在上述代码中,`@PostMapping`注解用于处理POST请求,`@GetMapping`注解用于处理GET请求,`@PathVariable`注解用于获取请求中的路径参数,`@RequestBody`注解用于获取请求体中的数据。 最后,我们需要创建一个客户端程序,用于向服务器发送HTTP请求并获取响应。我们可以使用Java的HttpClient类来发送HTTP请求。 ```java public class StudentClient { private static final String BASE_URL = "http://localhost:8080"; public static void main(String[] args) throws IOException { // add students addStudent(new Student(1, "Alice", LocalDate.of(2000, 1, 1))); addStudent(new Student(2, "Bob", LocalDate.of(2001, 2, 2))); // get all students List<Student> students = getAllStudents(); students.forEach(System.out::println); // get student by id Student student = getStudentById(1); System.out.println(student); } private static void addStudent(Student student) throws IOException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(BASE_URL + "/students")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(new ObjectMapper().writeValueAsString(student))) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.body()); } private static List<Student> getAllStudents() throws IOException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(BASE_URL + "/students")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(response.body(), new TypeReference<List<Student>>() {}); } private static Student getStudentById(int id) throws IOException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create(BASE_URL + "/students/" + id)) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); ObjectMapper mapper = new ObjectMapper(); return mapper.readValue(response.body(), Student.class); } } ``` 在上述代码中,我们使用`HttpClient`类来发送HTTP请求,使用`ObjectMapper`类来序列化和反序列化JSON数据。 现在,我们可以启动服务器和客户端程序,并测试增加学生、获取所有学生和获取指定学生的功能。

相关推荐

最新推荐

recommend-type

Spring Boot构建优雅的RESTful接口过程详解

主要介绍了spring boot构建优雅的RESTful接口过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
recommend-type

C#服务端RestFul Service-经验案例.doc

该文档说明c#端如何创建服务端RestFul Service接口,并给出详细的代码说明,方便用户学习和深入掌握。
recommend-type

浅谈java调用Restful API接口的方式

主要介绍了浅谈java调用Restful API接口的方式,具有一定借鉴价值,需要的朋友可以参考下。
recommend-type

Java 调用Restful API接口的几种方式(HTTPS)

主要介绍了Java 调用Restful API接口的几种方式(HTTPS),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
recommend-type

使用SpringBoot开发Restful服务实现增删改查功能

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。这篇文章主要介绍了基于SpringBoot开发一个Restful服务,实现增删改查功能,需要的朋友可以参考下
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。