现在我们切换为后台角色进行后台代码的开发。 # 初始化 同教师管理一样,我们初始化一个`KlassController`控制器来进行前台的测试,本次我们更加规范化的为控制器统一来建立一个`package`并命名为`controller`,然后把`KlassControoler`放到该`package`中。 ![](https://img.kancloud.cn/9e/a6/9ea67362270a2fc2b9a4bb735781663d_487x233.png) ``` panjiedeMac-Pro:springBootStudy panjie$ tree . ├── SpringBootStudyApplication.java ├── Teacher.java ├── TeacherController.java ├── controller │   └── KlassController.java └── entity └── Klass.java 2 directories, 5 files ``` ## 目录重构 使用`IDEA`(**这很重要**)将`TeacherController`及`Teacher`移动到对应的包下: ![](https://img.kancloud.cn/f4/85/f4852531d26ccbc60d06fd4b5e9df04f_477x268.gif) 重构后看起来舒服多了。 # 接收查询参数 在本节的第5小节中,我们定义了前后台的数据传输的规范:使用`GET /Klass`来请求班级的所有数据,在请求中必须传入`name`参数,该参数的类型为`String`;请求成功后,返回状态码为`200`,返回数据为班级数组。 前面我们学习过了使用`@PathVariable`接收路径变量的值,使用`@requestBody`来接收请求主体的值,那么当后面使用`http://localhost:8080/Klass?name=hello`该使用什么方法来接收呢? controller/KlassController.java ```java @GetMapping public List<Klass> getAll(@RequestParam String name ➊) { logger.info(name); return null; } ``` * ➊ 使用`@RequestParam`来接收`name`的值 ## 测试 启动数据库及后台后建立`HTTP Request`请求测试用例: ``` GET http://localhost:8080/Klass?name=hello ### ``` 运行测试: ``` GET http://localhost:8080/Klass?name=hello HTTP/1.1 200 Content-Length: 0 Date: Mon, 04 Nov 2019 03:15:34 GMT <Response body is empty> Response code: 200 ①; Time: 23ms; Content length: 0 bytes ``` 控制台: ``` 2019-11-04 11:15:34.615 INFO 77514 --- [nio-8080-exec-2] c.m.s.controller.KlassController : hello ② ``` 测试结果符合预期:① 使用URL访问,返回的状态为200 ② 控制台成功打印的name的值为hello,说明接收成功。 # 参考文档 | 名称 | 链接 | 预计学习时长(分) | | --- | --- | --- | | 源码地址 | [https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step3.2.8](https://github.com/mengyunzhi/spring-boot-and-angular-guild/releases/tag/step3.2.8) | - | | Method Arguments | [https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/web.html#mvc-ann-arguments](https://docs.spring.io/spring/docs/5.2.1.RELEASE/spring-framework-reference/web.html#mvc-ann-arguments) | 5 |