当前位置:   article > 正文

Springboot——Controller层开发、请求与响应、RESTful开发规范_springboot controller层

springboot controller层

目录

一、入门案例(小了解,没啥用)

1.1 创建Springboot工程

1.2 导入maven坐标

1.3 controller层代码

1.4 postman测试

二、 REST常用注解

 2.1 @Controller     

 2.2  @RequestMapping(请求映射路径)

 2.3  @ResponseBody

 2.4 @ComponentScan

 2.5  @RequestParam

 2.6 @RequestBody

 2.7 @RequestBody、@RequestParam、@PathVariable区别

 2.8 @DateTimeFormat

 2.9  @PathVariable

 2.10 @RestController

 2.11 @PostMapping

三、请求与响应

  3.1 请求方式

     3.1.1 Get请求普通参数传递

     3.1.2 Post请求普通参数传递

四、请求参数(了解,以后常用的是传JSON)

 4.1 普通参数(不同名称的映射)

 4.2 POJO类型参数

 4.3 嵌套POJO类型参数

 4.4 数组类型参数

 4.5 集合类型参数

五、请求与响应(重要,传送JSON数据)

5.1 JSON请求参数

 5.1.1 JSON数据

5.1.2  JSON对象(POJO)

5.1.3 JSON对象(POJO集合参数)

 5.2 日期型参数传递

 5.3 响应

5.3.1 响应页面(用的很少,几乎不用)

5.3.2  响应文本数据

 5.3.3 响应JSON数据

六、REST风格

6.1 RESTful 快速开发(简化)


 

一、入门案例(小了解,没啥用)

 1.1 创建Springboot工程

1.2 导入maven坐标

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

1.3 controller层代码

  1. @Controller //成功spring的bean 我们这里不使用@Component
  2. //@Controller 这是SpringMVC声明bean的专门注解
  3. public class UserController {
  4. /**
  5. * 提供给外部,处理请求的操作
  6. * @return
  7. */
  8. @RequestMapping("/save") //设置当前操作的访问路径
  9. @ResponseBody // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
  10. //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
  11. public String save(){
  12. System.out.println("user save...");
  13. // 我们选择return一个JSON数据
  14. return "{'module':'springboot'}";
  15. }
  16. }

 1.4 postman测试

    当然这个时候post也可以

二、 REST常用注解

    springboot中常用注解在下面这篇博客当中有一部分

Springboot中常用注解的使用语境、方法以及常用的maven坐标_我爱布朗熊的博客-CSDN博客_lombok maven坐标

    2.1 @Controller     

       类型:类注解

       作用:设定spring的核心控制器

  1. @Controller //成功spring的bean 我们这里不使用@Component
  2. //@Controller 这是SpringMVC声明bean的专门注解
  3. public class UserController {
  4. }

    2.2  @RequestMapping(请求映射路径)

         类型:方法注解、类注解

         作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀

  1. @RequestMapping("/save") //设置当前操作的访问路径
  2. public void save(){
  3. System.out.println("user save...");
  4. }

       

 

     当然这个注解也可以放到类上面,表示这个类中的方法请求路径的前缀,一般来说一个类的请求前缀都是一个样的,所以我们就没有必要在每个方法中都重复写相同的路径,我们把这一部分相同的路径提取出来放到类上面,这样就方便了我们以后的编码,也更好的将代码业务进行分类,避免出现同一个路径对应多个方法的错误形式

  1. @Controller //成功spring的bean 我们这里不使用@Component
  2. //@Controller 这是SpringMVC声明bean的专门注解
  3. @RequestMapping("/save") //设置当前层的请求前缀
  4. public class UserController {
  5. }

     2.3  @ResponseBody

         类型:方法注解

         作用:设置当前控制器方法响应内容为当前返回值,无需解析

  1. /**
  2. * 提供给外部,处理请求的操作
  3. * @return
  4. */
  5. @RequestMapping("/save") //设置当前操作的访问路径
  6. @ResponseBody // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
  7. //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
  8. public String save(){
  9. System.out.println("user save...");
  10. // 我们选择return一个JSON数据
  11. return "{'module':'springboot'}";
  12. }

  2.4 @ComponentScan

    

 2.5  @RequestParam

   作用:当请求参数与形参变量名不同,使用@RequestParam绑定参数关系

 

还有两个参数

  •  required:是否为必传参数
  •  defaultValue:参数默认值

2.6 @RequestBody

 

2.7 @RequestBody、@RequestParam、@PathVariable区别

 

2.8 @DateTimeFormat

内部有个Converter接口,就是将传递的参数和收集的参数的类型进行转换的

 

 

 

 2.9  @PathVariable

 

 

 2.10 @RestController

   @RestController == @ResponseBody+@Controller

 2.11 @PostMapping

  @PostMapping ==@RequestMapping( method = RequestMethod.POST )

三、请求与响应

   3.1 请求方式

      3.1.1 Get请求普通参数传递

  1. /**
  2. * 提供给外部,处理请求的操作
  3. * @return
  4. */
  5. @RequestMapping("/commonParam") //设置当前操作的访问路径
  6. @ResponseBody // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
  7. //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
  8. public String save(String name){
  9. System.out.println("普通参数传递 name="+name);
  10. // 我们选择return一个JSON数据
  11. return "{'module':'springboot'}";
  12. }

  

传递多个参数呢?

  1. /**
  2. * 提供给外部,处理请求的操作
  3. * @return
  4. */
  5. @RequestMapping("/commonParam") //设置当前操作的访问路径
  6. @ResponseBody // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
  7. //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
  8. public String save(String name,String age){
  9. System.out.println("普通参数传递 name="+name);
  10. System.out.println("普通参数传递 age="+age);
  11. // 我们选择return一个JSON数据
  12. return "{'module':'springboot'}";
  13. }

 

 

     3.1.2 Post请求普通参数传递

   我们可以看下图的变化,我们选择了POST,然后路径中不再有各种Params

   对于请求体编辑参数的位置我们是选择form-data还是x-www-form-urlencoded?

 

 

四、请求参数(了解,以后常用的是传JSON)

  参数种类:

  • 普通参数
  • POJO类型参数
  • 嵌套POJO类型参数
  • 数组类型参数
  • 集合类型参数

 4.1 普通参数(不同名称的映射)

我们还是看看刚刚的get请求

现在我们修改一个地方,将发送请求时携带的params的参数名和后端接收的参数名不一致

  1. @RequestMapping("/commonParam") //设置当前操作的访问路径
  2. @ResponseBody // 因为我们要返回一个JSON数据或者说是一个字符串,我们要再加一个ResponseBody注解
  3. //简单的说就是把我们要响应的东西作为一个整体内容返回到前端
  4. public String save(@RequestParam("name") String username, String age){
  5. System.out.println("普通参数传递 name="+username);
  6. System.out.println("普通参数传递 age="+age);
  7. // 我们选择return一个JSON数据
  8. return "{'module':'springboot'}";
  9. }

 

 

 4.2 POJO类型参数

  1. @RequestMapping("/pojoParam")
  2. @ResponseBody
  3. public String pojoParam(User user){
  4. System.out.println("普通参数传递 user="+user);
  5. // 我们选择return一个JSON数据
  6. return "{'module':'pojo param'}";
  7. }

 

 

 4.3 嵌套POJO类型参数

  1. public class User {
  2. private String name;
  3. private int age;
  4. private Address address;
  5. }

 

 

4.4 数组类型参数

  1. @RequestMapping("/arrayParam")
  2. @ResponseBody
  3. public String arrayParam(String[] likes){
  4. System.out.println("数组传参 like="+ Arrays.toString(likes));
  5. // 我们选择return一个JSON数据
  6. return "{'module':'arrays'}";
  7. }

 

 

4.5 集合类型参数

  1. @RequestMapping("/listParam")
  2. @ResponseBody
  3. public String listParam(@RequestParam List<String> likes){
  4. System.out.println("集合参数传递 like="+ likes);
  5. // 我们选择return一个JSON数据
  6. return "{'module':'list param'}";
  7. }

 

 

五、请求与响应(重要,传送JSON数据)

5.1 JSON请求参数

  分类:

  •   JSON数据
  •   JSON对象(POJO)
  •   JSON数据(POJO)

 5.1.1 JSON数据

  1. @RequestMapping("/listParamJson")
  2. @ResponseBody
  3. public String listParamJson(@RequestBody List<String> likes){
  4. System.out.println("集合参数传递 like="+ likes);
  5. // 我们选择return一个JSON数据
  6. return "{'module':'list param json'}";
  7. }

 

5.1.2  JSON对象(POJO)

 

 

5.1.3 JSON对象(POJO集合参数)

 

 5.2 日期型参数传递

   日期类型数据基于系统不同,格式也不尽相同

日期型的参数,可以直接由一个字符串转换成data

  1. @RequestMapping("/dataParam")
  2. @ResponseBody
  3. public String dataParam(Date date){
  4. System.out.println("集合参数传递 date="+ date);
  5. // 我们选择return一个JSON数据
  6. return "{'module':'date '}";
  7. }

 

 

 

但是当我们传递日期参数使用中行线的形式时,就会报错,就是下图中的date1形式,这怎么呢?

 

 将代码修改为下面这个样子就可以了

  1. @RequestMapping("/dateParam")
  2. @ResponseBody
  3. public String dateParam(Date date, @DateTimeFormat(pattern = "yyyy-MM-dd") Date date1){
  4. System.out.println("集合参数传递 date="+ date);
  5. System.out.println("集合参数传递 date="+ date1);
  6. // 我们选择return一个JSON数据
  7. return "{'module':'date '}";
  8. }

 

 

5.3 响应

   简单来说,将我们的处理结果返回给我们的用户(也可以说是前端,前端接收到页面后再渲染页面)

  •    响应页面
  •    响应数据 (文本数据、JSON数据)

5.3.1 响应页面(用的很少,几乎不用)

 响应页面非常的简单,将页面名称当做字符串返回

 

 

5.3.2  响应文本数据

 

 

 5.3.3 响应JSON数据

 

 

 

 

六、REST风格

REST :表现形式状态转换

 

优点:

           隐藏资源的访问行为,无法通过地址得知资源是何种操作

           书写简化

 

6.1 RESTful 快速开发(简化)

  这是之前的代码

 

  现在的代码(很清晰)

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/580077
推荐阅读
相关标签
  

闽ICP备14008679号