11. SpringBoot项目中参数获取与响应

这篇具有很好参考价值的文章主要介绍了11. SpringBoot项目中参数获取与响应。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

SpringBoot项目中参数获取与响应

1. 程序结构&通信方式

程序结构:

  • C/S : 客户端/服务器端
    -Main方法。
    -效果炫目、数据相对安全。
    -公司成本高,因为要分别开发客户端和服务器端。

  • B/S: 浏览器端/服务器端
    -效果依赖于浏览器、数据相对不如C/S安全(token令牌模式)
    -公司成本低,只需要单独开发服务器端。

资源信息:

  • 资源:在网上能够访问的一切信息(文字、图片、音乐、视频…)

  • 静态资源:代码不变、效果不变。
    (HTML/CSS/JS/VUE…)

  • 动态资源:效果改变根据代码控制。
    (Java、servlet…)

通信方式:

  • WEB程序:请求和响应模式。
    -浏览器向服务器发信息: 发请求
    -服务器向浏览器发信息:发响应

  • 请求-响应是成对出现的。
    -先有请求,再有响应。
    -必须是 浏览器先向服务器发请求,服务器收到请求后,才能向浏览器发响应。

2. 创建和浏览器交互的控制器-controller

  • 包创建:
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
  • Java程序(Java类)创建:

新建名为—MyController的class类
11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
在MyController中输入

@RestController //标记当前Java类,是一个可以和浏览器进行数据交换的控制器
@RequestMapping("/my") //给该控制器设置一个访问路径,该路径是可以在浏览器上进行访问的
public class MyController {

   @RequestMapping("/t1")//给该方法设置一个访问路径,该路径是可以在浏览器上进行访问的
   public String t1(){
       System.out.println("helloWorld!!!");//在控制台打印信息
       return "你好世界!!!";//将信息发给浏览器,让浏览器展示
   }
}

程序运行的访问路径:http://localhost:8080/my/t1

问题解释

  1. SpringBoot启动和关闭
    启动:
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
    关闭:
    任意按下一个小红方块均可关闭SpringBoot项目
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
    关闭之后,刷新网页,不再出现运行SpringBoot项目时显示的页面
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器

  2. 代码编写的注意事项

11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器

  1. 如果更新了代码,怎么办?
    先正常关闭服务器,再重新正常启动服务器,代码执行的就是最新代码了。

3. 单参数获取

11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器

传统风格:
http://主机名:端口/资源?参数列表
例如:http://localhost:8080/my/t1?userName=aa&sex=man&hobbies=code&hobbies=swim
- 必须传递参数
@RequestParam("参数名") 参数类型 参数名

例如:如果忘记传递sex这个参数,浏览器就会报错
11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器

- 非必须传递参数
@RequestParam(value="参数名",required=false) 参数类型 参数名
设置为非必须传递参数,如果参数正常传递,可以接收,如果参数未传递,返回为null

例如:

 @RequestMapping("/t2")
   public void t2(
           @RequestParam("userName")String userName,
           @RequestParam("sex")String sex,
           @RequestParam("hobbies")String[] hobbies
   ){
       //http://localhost:8080/my/t2?userName=aa&sex=man&hobbies=code&hobbies=swim
       System.out.println(userName);
       System.out.println(sex);
       System.out.println(Arrays.toString(hobbies));
   }

@RequestMapping("/t3")
public void t3(
       @RequestParam("userName")String userName,
       @RequestParam(value="sex",required = false)String sex,
       @RequestParam("hobbies")String[] hobbies
){
   //http://localhost:8080/my/t3/userName=aa&sex=man&hobbies=code&hobbies=swim
   //http://localhost:8080/my/t3?userName=aa&hobbies=code&hobbies=swim
   System.out.println(userName);
   System.out.println(sex);
   System.out.println(Arrays.toString(hobbies));
}

RESTFul风格:
http://主机名:端口/资源/参数列表
例如:http://localhost:8080/my/t1/aa/man/code,swim
@PathVariable("参数名") 参数类型 参数名
@RequestMapping("/资源名/{参数名1}/{参数名2}")

例如:http://localhost:8080/my/t1/aa/man/code,swim
@RequestMapping("/t1/{userName}/{sex}/{hobbies}")
@PathVariable("userName") String userName

@RequestMapping("/t4/{userName}/{sex}/{hobbies}")
public void t4(
       @PathVariable("userName") String userName,
       @PathVariable("sex")String sex,
       @PathVariable("hobbies")String[] hobbies
){
   //http://localhost:8080/my/t4/aa/man/code,swim
   System.out.println(userName);
   System.out.println(sex);
   System.out.println(Arrays.toString(hobbies));
}

小结: 传统方式:@RequestParam
	   RESTFul风格:@PathVariable

4. 多参数获取(JavaBean/Map数据)

4.1. Swagger2

postman经典测试工具
Swagger2集成到项目中,比postman更加方便测试工具。
  • 环境搭建:
    在pom.xml中添加maven环境—再点击更新maven环境11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
	<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-boot-starter</artifactId>
            <version>3.0.0</version>
	</dependency>

添加注解
11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器

  • 使用入口:
    8080是端口号
http://localhost:8080/swagger-ui/index.html
  • 使用操作:
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
    POST请求居多,少量的GET请求
JavaBean:
进行数据封装:
属性名 = 属性值;
userName = 张三;
hobbies = 编程,游泳;

创建TestBean1类

@Data
public class TestBean1 {
   private String name;
   private String sex;
   private String[] hobbies;
}

@RequestMapping("/t5")
public void t5(){
   //ctrl+alt+v
   TestBean1 tb1 = new TestBean1();
   tb1.setName("小张");
   tb1.setSex("男");
   String[] hobbies = {"编程","游泳"};
   tb1.setHobbies(hobbies);
   System.out.println(tb1);//查看所有属性值
   System.out.println(tb1.getName());//小张
}

Map:
创建出来,封装数据。文章来源地址https://www.toymoban.com/news/detail-726161.html

@RequestMapping("/t6")
public void t6(){
   //key:String类型   value:任意类型
   Map<String, Object> map1 = new HashMap<>();
   map1.put("name","小张");
   map1.put("sex","男");
   String[] hobbies = {"编程","游泳"};
   map1.put("hobbies",hobbies);

   System.out.println(map1);//查看所有属性值
   System.out.println(map1.get("name"));//小张
   System.out.println(Arrays.toString((Object[]) map1.get("hobbies")));
}

4.2. application/x-www-form-urlencoded格式

Swagger测试同步会导致复选框用hobbies=a1|a2格式,导致服务器解析失败。	
普通数据
接收请求:直接在controller方法参数列表上写 JavaBean或map
格式1:(建议)
public 返回值类型 方法名(JavaBean javaBean){

}

格式2:(不建议)
public 返回值类型 方法名(Map<String,Object> map){

}

@RequestMapping("/t7")
public void t7(TestBean1 testBean1){
   //http://localhost:8080/my/t7?name=%E5%B0%8F%E5%BC%A0&sex=man&hobbies=code&hobbies=swim
   System.out.println(testBean1);
   System.out.println(testBean1.getName());
}
@RequestMapping("/t8")
public void t8(Map<String,Object> map){
   //http://localhost:8080/my/t8?name=%E5%B0%8F%E5%BC%A0&sex=man&hobbies=code&hobbies=swim
   System.out.println(map);//{}
   System.out.println(map.get("name"));//null
   System.out.println(Arrays.toString((Object[]) map.get("hobbies")));//null
}

4.3. application/json格式

  • json数据接收请求:
    11. SpringBoot项目中参数获取与响应,09一个新的项目,spring boot,后端,java,学习,编辑器
@RequestBody JavaBean javaBean
@RequestBody Map<String,Object> map
@RequestMapping("/t9")
public void t9(@RequestBody TestBean1 testBean1){
   System.out.println(testBean1);
   System.out.println(testBean1.getName());
}


@RequestMapping("/t10")
public void t10(@RequestBody Map<String,Object> map){
   System.out.println(map);//{hobbies=[游泳, 编程], name=小张, sex=男}
   System.out.println(map.get("name"));//小张
}

小结:如果接收json请求数据,若只是接收并使用一次,用map.
     如果多个方法中都有接收和使用,用JavaBean
  • json数据发送响应
@ResponseBody JavaBean
@ResponseBody Map<String,Object>
@RequestMapping("/t11")
public @ResponseBody TestBean1 t11(){
   TestBean1 tb1 = new TestBean1();
   tb1.setName("小张");
   tb1.setSex("男");
   String[] hobbies = {"编程","游泳"};
   tb1.setHobbies(hobbies);
   return tb1;
}

@RequestMapping("/t12")
public @ResponseBody Map<String, Object> t12(){
   Map<String, Object> map1 = new HashMap<>();
   map1.put("name","小张");
   map1.put("sex","男");
   String[] hobbies = {"编程","游泳"};
   map1.put("hobbies",hobbies);
   return map1;
   }

小结:如果发送json响应数据,若只是响应并使用一次,用map.
     如果多个方法中都有响应和使用,用JavaBean

到了这里,关于11. SpringBoot项目中参数获取与响应的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • DAY09_SpringBoot—整合SpringMVC&SpringMVC参数取值用法

    Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一

    2024年01月25日
    浏览(42)
  • 使用git将两个项目合并一个新的项目(保姆级)

    1.1在git创建一个新的项目(此项目为合成后的项目) 1.2创建一个空白的文件夹 1.3点击右键选择 Git Bash Here 1.4 输入命令 git clone+git地址 运行成功结果如图所示 1.5文件夹变化 1.6打开对应文件夹我们发现该项目已经存在了  成功 2.1接下来我吧我们的第一个的项目添加到我的这个

    2024年01月25日
    浏览(35)
  • Git 如何将一个项目的代码放到一个新的仓库中,但不在新的仓库中显示旧的提交记录

    场景:我想把RuoYi的代码放到一个新的仓库里,放进去之后,这个仓库会显示RuoYi之前的所有提交,如何不显示这些旧的提交? 有时候,我们可能需要将一个项目的代码放到一个新的仓库中,但是我们又不想在新的仓库中显示旧的提交记录。这可能是因为旧的提交记录包含一

    2024年02月07日
    浏览(51)
  • SpringBoot接受前台参数的六种方式以及统一响应

    请求 SpringBoot接受前台参数的六种方式,首先因为从前台发送的请求没有界面的话只能是从地址栏发送并且只能是Get请求,为了测试其他的请求,所以我们使用一个工具-Postman,Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。 对于前台传过来的参数大致分为六

    2024年02月08日
    浏览(61)
  • springboot项目外卖管理 day09-mysql主从复制以及nginx入门

    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 目前我们所有的读和写的压力都是由一台数据库来承担, 如果数据库服务器磁盘损坏,则数据会丢失(没有备份) 解决这个问题,就可以用MySQL的主从复制,写操作交给主库,读操作交给从库

    2024年02月12日
    浏览(40)
  • 【从零开始学Django篇001】从创建一个新的Django项目开始

    👑 作 者 主 页 :👉 CSDN 丨 博客园 🏆 学 习 交 流: 👉 在下周周ovoの社区 💎 从零开始 学Django 系列专栏: 👉Django系列专栏 ​ 在这个专栏,大概会从零开始了解到大部分的Django知识点。比如说 Django模板语言,路由系统,视图系统,中间件,AJAX,浏览器的同源策略及使

    2024年02月08日
    浏览(74)
  • 解决前后端分离项目后端设置响应头前端无法获取

    在开发前后端分离项目中出现后端设置响应头,前端一直无法获取等问题。 后端设置响应头代码如下 在浏览器中我们是可以看到设置的响应头 Content-Disposition 属性,但是在前端接收到的响应信息中却看不到我们设置的 Content-Disposition 属性。 原来在前后端分离的项目中除了需

    2024年02月04日
    浏览(64)
  • springboot 日志记录接口的请求参数和响应结果的两种方式-拦截器和切面(具体代码)

    springboot 日志记录接口的请求参数和响应结果的两种方式-拦截器和切面(具体代码) 前言:在生产中如果出现问题,我们想要查看日志,某个时间段用户调用接口的请求参数和响应的返回结果,通过日志来推测下用户当时做了什么操作。日志记录接口的请求参数和响应结果有利

    2024年02月02日
    浏览(64)
  • springboot切面获取参数转为实体对象

    在Spring Boot中使用切面来获取参数并将其转换为实体对象的过程如下所示: 首先,创建一个自定义注解 @ParamToEntity ,该注解可以应用于需要进行参数转换的方法上。 接下来,创建一个切面类 ParameterAspect ,通过AOP技术在目标方法执行前后进行处理。 最后,在需要进行参数转

    2024年01月25日
    浏览(35)
  • springboot如何优雅的获取前端参数

    对于初学者来说,困难的不是理论知识,而是如何在程序中具体实现。 现在的项目基本上都是前后端分离的项目,如何打通前后端,接收前端传过来的参数呢? 废话不多说,这篇文章就来说一说接收前端参数的具体操作 1.1 核心代码 1.2 测试结果 在访问“http://localhost:8080/a

    2024年03月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包