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 ...
随机推荐
- wordpress默认css样式class和id集合
你是否想过如何设计WordPress主题的不同元素?每个主题都不一样,但是有一些CSS的class和id是由WordPress生成的.我们将逐一介绍一些最重要的默认WordPress样式,方便初学者快 ...
- deque_queue_list
#include <iostream> #include <deque>//front push pop back push pop [] at() #include < ...
- css绘制各种图形,三角形,长方形,梯形
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8cAAADVCAIAAAD1mxUAAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWX ...
- Go语言 - 结构体 | 方法
自定义类型和类型别名 自定义类型 在Go语言中有一些基本的数据类型,如string.整型.浮点型.布尔等数据类型, Go语言中可以使用type关键字来定义自定义类型. 自定义类型是定义了一个全新的类型 ...
- Maven下创建SSM项目的所有依赖和插件
记录下来,方便以后使用 tomcat:7 Maven:3.6.1 IDEA:2018.3 <properties> <spring.version>5.1.5.RELEASE& ...
- score indicator
The strongest scorer applet is the strongest scorer specially designed for the players. No longer wo ...
- Python错误 -- try/except/finally 、调用栈、记录错误、抛出错误
Bug:程序编写有问题造成的错误,称之为Bug. debug:调试 注意:bug是程序本身有问题.有缺陷.系统漏洞 异常:完全无法在程序运行中预测的错误,例如写入文件的时候,磁盘满了,写不进去了 ...
- The Architectural Principles Behind Vrbo’s GraphQL Implementation
转自:https://medium.com/expedia-group-tech/graphql-component-architecture-principles-homeaway-ede8a58d ...
- GIT与项目
创建GitHub账号 本地Git仓库和GitHub仓库之间的传输是通过SSH加密的 step1:创建项目的SSH Key ssh-keygen -t rsa -C "your email@e ...
- cf 1179 C
目录 A B C A 模拟出A不是最大值的情况,存起来. 最多有n个.当A为最大值的时候,后面n-1个数开始循环. 查询分两种情况讨论就行了 #include <bits/stdc++.h> ...