Springboot——Controller层开发、请求与响应、RESTful开发规范
创始人
2024-02-18 21:51:07

目录

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

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坐标

        org.springframework.bootspring-boot-starter-web

1.3 controller层代码


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

 1.4 postman测试

    当然这个时候post也可以

二、 REST常用注解

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

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

    2.1 @Controller     

       类型:类注解

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

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

    2.2  @RequestMapping(请求映射路径)

         类型:方法注解、类注解

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

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

       

 

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

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

     2.3  @ResponseBody

         类型:方法注解

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

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

  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请求普通参数传递

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

  

传递多个参数呢?

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

 

 

     3.1.2 Post请求普通参数传递

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

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

 

 

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

  参数种类:

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

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

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

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

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

 

 

 4.2 POJO类型参数

@RequestMapping("/pojoParam")@ResponseBodypublic String pojoParam(User user){System.out.println("普通参数传递 user="+user);//      我们选择return一个JSON数据return "{'module':'pojo param'}";}

 

 

 4.3 嵌套POJO类型参数

public class User {private String name;private int age;private Address address;
}

 

 

4.4 数组类型参数

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

 

 

4.5 集合类型参数

    @RequestMapping("/listParam")@ResponseBodypublic String listParam(@RequestParam List likes){System.out.println("集合参数传递 like="+ likes);//      我们选择return一个JSON数据return "{'module':'list param'}";}

 

 

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

5.1 JSON请求参数

  分类:

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

 5.1.1 JSON数据

    @RequestMapping("/listParamJson")@ResponseBodypublic String listParamJson(@RequestBody List likes){System.out.println("集合参数传递 like="+ likes);//      我们选择return一个JSON数据return "{'module':'list param json'}";}

 

5.1.2  JSON对象(POJO)

 

 

5.1.3 JSON对象(POJO集合参数)

 

 5.2 日期型参数传递

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

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

@RequestMapping("/dataParam")@ResponseBodypublic String dataParam(Date date){System.out.println("集合参数传递 date="+ date);//      我们选择return一个JSON数据return "{'module':'date '}";}

 

 

 

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

 

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

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

 

 

5.3 响应

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

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

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

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

 

 

5.3.2  响应文本数据

 

 

 5.3.3 响应JSON数据

 

 

 

 

六、REST风格

REST :表现形式状态转换

 

优点:

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

           书写简化

 

6.1 RESTful 快速开发(简化)

  这是之前的代码

 

  现在的代码(很清晰)

 

 

 

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
demo什么意思 demo版本... 618快到了,各位的小金库大概也在准备开闸放水了吧。没有小金库的,也该向老婆撒娇卖萌服个软了,一切只...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...