spring boot前后端参数传递方式
使用spring boot2X做后端,postman做前端测试
1.获取json字符串
@RestController
public class Demo {
@RequestMapping("test")
public Result test(@RequestBody JSONObject obj) { return Result.success(200,obj);
} }
测试

2.获取出传入的参数值
@RestController
public class Demo {
@RequestMapping("test")
public Result test(@RequestParam(value = "name",required = false) String name,@RequestParam(value = "id") Integer id) { MyData my = new MyData();
my.setId(id);
my.setName(name);
return Result.success(200,my);
} }
测试

3.获取路径中的参数值
(1)通过PathVariable注解来绑定请求路径的参数
@RestController
public class Demo {
@RequestMapping(value = "/test/{id}/{name}")
public Result test(@PathVariable(value = "id") Integer id, @PathVariable(value = "name") String name) { MyData my = new MyData();
my.setId(id);
my.setName(name);
return Result.success(200,my);
} }
测试

(2)指定前端url请求参数名称与方法名一致
@RestController
public class Demo {
@RequestMapping(value = "test")
public Result test(Integer id,String name) { MyData my = new MyData();
my.setId(id);
my.setName(name);
return Result.success(200,my);
} }

(3)通过HttpServletRequest来获取前端页面参数
@RestController
public class Demo {
@RequestMapping(value = "test")
public Result test(HttpServletRequest request) { MyData my = new MyData();
my.setId(Integer.valueOf(request.getParameter("id")));
my.setName(request.getParameter("name"));
return Result.success(200,my);
}
}

(4)通过RequestParam注解来获取
@RestController
public class Demo {
@RequestMapping(value = "test")
public Result test(@RequestParam(defaultValue = "0") Integer id,@RequestParam(defaultValue = "0")String name) { MyData my = new MyData();
my.setId(id);
my.setName(name);
return Result.success(200,my);
}
}

4.获取请求的报文头
@RestController
public class Demo {
@RequestMapping(value = "test")
public Result test(@RequestHeader Map<String, String> map) { return Result.success(200,map);
}
}

5.请求中的cookie
@RestController
public class Demo {
@RequestMapping(value = "test")
public Result test(@CookieValue(value = "JSESSIONID", required = true) String jsessionId,@CookieValue(value = "name", required = true) String name) { return Result.success(200,"JSESSIONID="+jsessionId+",name="+name);
}
}


5.获取矩阵变量绑定的参数
矩阵变量
矩阵变量可以出现在任何路径片段中,每一个矩阵变量都用分号(;)隔开,多个值可以用逗号隔开
Spring4.0已经全面支持Matrix Variable,该注解似的开发人员能够将请求中的矩阵变量绑定到处理器的方法参数中
spring boot 默认是无法使用矩阵变量绑定参数的。需要覆盖WebMvcConfigurer中的configurePathMatch方法
package com.example.demo.core; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.util.UrlPathHelper; @Configuration
public class WebMvcConfig implements WebMvcConfigurer {
@Override
public void configurePathMatch(PathMatchConfigurer configurer) {
UrlPathHelper urlPathHelper=new UrlPathHelper();
urlPathHelper.setRemoveSemicolonContent(false);
configurer.setUrlPathHelper(urlPathHelper);
} }
使用矩阵变量
@RestController
public class Demo {
@RequestMapping(value="test/{param}")
public Object test(@MatrixVariable(pathVar="param",value="color")String[] tt){
for (String s : tt) {
System.out.println(s);
}
return Result.success(200,tt);
}
}

调用时也可以写成http://127.0.0.1:8080/test/color=red;color=green;color=blue,结果是一样的
@RestController
public class Demo {
@RequestMapping(value="test/{x1}/p/{x2}")
public Object test2(@MatrixVariable(pathVar = "x1") Map<String, String[]> x1,
@MatrixVariable(pathVar = "x2") Map<String, String[]> x2){ System.out.println(x1);
System.out.println(x2);
return x1+"-----"+x2;
}
}

附:
Result.java
package com.example.demo.core; import com.alibaba.fastjson.JSON; /**
* Created by Beibei on 19/02/22
* API响应结果
*/
public class Result<T> {
private int code;
private String message;
private T data; public Result setCode(Integer code) {
this.code = code;
return this;
} public int getCode() {
return code;
} public String getMessage() {
return message;
} public Result setMessage(String message) {
this.message = message;
return this;
} public T getData() {
return data;
} public Result setData(T data) {
this.data = data;
return this;
} @Override
public String toString() {
return JSON.toJSONString(this);
} public static <T> Result<T> fail(Integer code,T data) {
Result<T> ret = new Result<T>();
ret.setCode(code);
ret.setData(data);
return ret;
} public static <T> Result<T> failMessage(Integer code,String msg) {
Result<T> ret = new Result<T>();
ret.setCode(code);
ret.setMessage(msg);
return ret;
}
public static <T> Result<T> successMessage(Integer code,String msg) {
Result<T> ret = new Result<T>();
ret.setCode(code);
ret.setMessage(msg);
return ret;
} public static <T> Result<T> success(Integer code,T data) {
Result<T> ret = new Result<T>();
ret.setCode(code);
ret.setData(data);
return ret;
} }
MyData.java
package com.example.demo.domain;
public class MyData {
private int id;
private String name;
private String other;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOther() {
return other;
}
public void setOther(String other) {
this.other = other;
}
}
spring boot前后端参数传递方式的更多相关文章
- 八个开源的 Spring Boot 前后端分离项目,一定要收藏!
八个开源的 Spring Boot 前后端分离项目 最近前后端分离已经在慢慢走进各公司的技术栈,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,我们也非常建议大家学习一下前 ...
- 七个开源的 Spring Boot 前后端分离项目,一定要收藏!
前后端分离已经在慢慢走进各公司的技术栈,根据松哥了解到的消息,不少公司都已经切换到这个技术栈上面了.即使贵司目前没有切换到这个技术栈上面,松哥也非常建议大家学习一下前后端分离开发,以免在公司干了两三年 ...
- Vue+Spring Boot 前后端分离的商城项目开源啦!
新蜂商城 Vue 移动端版本开源啦! 去年开源新蜂商城项目后,就一直在计划这个项目 Vue 版本的改造,2020 年开始开发并且自己私下一直在测试,之前也有文章介绍过测试过程和存在的问题,修改完成后, ...
- Spring Boot启动命令参数详解及源码分析
使用过Spring Boot,我们都知道通过java -jar可以快速启动Spring Boot项目.同时,也可以通过在执行jar -jar时传递参数来进行配置.本文带大家系统的了解一下Spring ...
- 右击main 方法运行正常,启动tomcat 后,spring boot 项目 出现参数字符串是乱码的情况
PrintWriter out = new PrintWriter(new OutputStreamWriter(conn.getOutputStream(), "utf-8")) ...
- 七:Spring Security 前后端分离登录,非法请求直接返回 JSON
Spring Security 前后端分离登录,非法请求直接返回 JSON 解决方案 在 Spring Security 中未获认证的请求默认会重定向到登录页,但是在前后端分离的登录中,这个默认行为则 ...
- spring boot + spring security +前后端分离【跨域】配置 + ajax的json传输数据
1.前言 网上各个社区的博客参差不齐 ,给初学者很大的困扰 , 我琢磨了一天一夜,到各个社区找资料,然后不断测试,遇到各种坑,一言难尽啊,要么源码只有一部分,要么直接报错... 最后实在不行,直接去看 ...
- vue + spring boot + spring security 前后端分离 携带 Cookie 登录实现 只写了个登录
最近想弄一下vue 所以就自己给自己找坑入 结果弄的满身是伤 哈哈哈 首先我说下 前后端分离 跨域请求 我在网上找了一些 可是都是针对于 spring boot 的 我自己还有 securi ...
- Spring MVC前后端的数据传输
本篇文章主要介绍了Spring MVC中如何在前后端传输数据. 后端 ➡ 前端 在Spring MVC中这主要通过Model将数据从后端传送到前端,一般的写法为: @RequestMapping(va ...
随机推荐
- JQuery系列(8) - JQuery插件开发
所谓“插件”,就是用户自己新增的jQuery实例对象的方法.由于该方法要被所有实例共享,所以只能定义在jQuery构造函数的原型对象(prototype)之上.对于用户来说,把一些常用的操作封装成插件 ...
- 阿里巴巴Java开发手册(格式规约篇)——查自己的漏-补自己的缺
(三) 格式规约 1. [强制]大括号的使用约定.如果是大括号内为空,则简洁地写成{}即可,不需要换行:如果是非空代码块则: 1) 左大括号前不换行.行. 2) 左大括号后换行. 3) 右大括号前换行 ...
- python文件读取,替换(带格式,python lib 库)
import os, time import sys import re def read_old_part(filename, start, end): content = [] recording ...
- RxCocoa, RxSwift, Bond, Interstellar
While you can use any functional library, I personally prefer RxSwift because I have the most experi ...
- GridControl 使用方法篇 --- 隐藏表头、隐藏Group by Box
- 【城市天气】使用Ajax发送和接受数据
任务:利用中国天气网的公开接口,实现天气预报的查询功能 实验的功能要求如下: (1)当网页加载时,根据所给的 json 数据解析获得省(直辖市)的信息并显示在下拉列表框中供用户选择: (2)当用户选择 ...
- spark学习收集
spark优化: http://www.cnblogs.com/hark0623/p/5533803.html 董西成学生写的经验分享(很详细很强大) spark官网 API http://spark ...
- [Algorithm] Bitwise Operators
"|" can be used as assign "&" can be used as check // Read, Write, Execute / ...
- 一个项目设置两个git地址,并最终实现一次性同时推送到到两个git地址上的方法总结
基于多处备份的想法,确保自己的代码不丢失.或者是代码的git本身搭建在自己公司的服务上,而你为了保险起见,想把项目同时放在码云或者github上面. 这样,你就需要让一个项目同时备份在两个云端,这样即 ...
- be of + 名词
语法: “be of +抽象名词(词组)” 表示主语的某种形状或特征,相当于 "be+形容词" 例如: be of value=be valuable : be of inter ...