首页 > 其他分享 >springboot 19种参数接收方式

springboot 19种参数接收方式

时间:2024-08-02 09:28:41浏览次数:15  
标签:return springboot 19 User user id 接收 public String

1. @PathVariable

用来处理URL路径中的参数。

@GetMapping("/user/{id}")
public String getUser(@PathVariable String id) {
    return "User ID: " + id;
}

2. @RequestParam

用于处理URL中的查询参数。

@GetMapping("/user")
public String getUser(@RequestParam String id) {
    return "User ID: " + id;
}

3. @RequestHeader

用于获取HTTP请求头信息。

@GetMapping("/user")
public String getUser(@RequestHeader("User-Agent") String userAgent) {
    return "User Agent: " + userAgent;
}

4. @RequestBody

用来接收客户端发送的JSON或XML等格式的请求体。

@PostMapping("/user")
public String createUser(@RequestBody User user) {
    return "User Name: " + user.getName();
}

5. @ModelAttribute

主要用于表单提交,将请求参数绑定到对象上。

@PostMapping("/user")
public String createUser(@ModelAttribute User user) {
    return "User Name: " + user.getName();
}

6. @RequestAttribute

用于获取在请求期间添加的属性。

@GetMapping("/user")
public String getUser(@RequestAttribute String id) {
    return "User ID: " + id;
}

7. @CookieValue

用来获取请求中的Cookie值。

@GetMapping("/user")
public String getUser(@CookieValue(value = "SessionID", defaultValue = "default") String sessionId) {
    return "Session ID: " + sessionId;
}

8. @SessionAttribute

用于获取会话范围内的属性。

@GetMapping("/user")
public String getUser(@SessionAttribute("user") User user) {
    return "User Name: " + user.getName();
}

9. @MatrixVariable

用于从路径中的矩阵变量获取值。

@GetMapping("/user/{id}")
public String getUser(@PathVariable String id, @MatrixVariable String name) {
    return "User Name: " + name;
}

10. HttpServletRequest

通过Servlet API直接获取请求参数。

@GetMapping("/user")
public String getUser(HttpServletRequest request) {
    String id = request.getParameter("id");
    return "User ID: " + id;
}

11. MultiValueMap & Map

用来处理表单提交的参数。

@PostMapping("/user")
public String createUser(@RequestParam MultiValueMap<String, String> paramMap) {
    return "Parameters: " + paramMap.toString();
}

12. @RequestPart

专门用于获取请求中的multipart部分。

@PostMapping("/upload")
public String uploadFile(@RequestPart("file") MultipartFile file) {
    return "File Name: " + file.getOriginalFilename();
}

13. @RequestParam Map

获取请求中的查询参数,并将其绑定到Map中。

@GetMapping("/user")
public String getUser(@RequestParam Map<String, String> params) {
    return "Parameters: " + params.toString();
}

14. @PathVariable Map

获取路径变量,并将其绑定到Map中。

@GetMapping("/user/{id}/{name}")
public String getUser(@PathVariable Map<String, String> pathVars) {
    return "Path Variables: " + pathVars.toString();
}

15. HandlerMethodArgumentResolver

自定义参数解析器来处理复杂的请求参数。

public class CustomArgumentResolver implements HandlerMethodArgumentResolver {
    @Override
    public boolean supportsParameter(MethodParameter parameter) {
        return parameter.getParameterType().equals(CustomObject.class);
    }

    @Override
    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer, NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
        return new CustomObject(webRequest.getParameter("customParam")); 
    }
}

16. @RequestParam List

绑定请求中的多个参数到List。

@GetMapping("/users")
public String getUsers(@RequestParam List<String> ids) {
    return "User IDs: " + ids.toString();
}

17. @RequestParam数组

绑定请求中的多个参数到数组。

@GetMapping("/users")
public String getUsers(@RequestParam String[] ids) {
    return "User IDs: " + Arrays.toString(ids);
}

18. @RequestParam Optional

用Optional来处理可选的请求参数。

@GetMapping("/user")
public String getUser(@RequestParam Optional<String> id) {
    return "User ID: " + id.orElse("default");
}

19. @ModelAttribute用在参数上

获取请求参数,并使用@ModelAttribute注解进行方法参数绑定。

@GetMapping("/search")
public String searchUser(@ModelAttribute("criteria") SearchCriteria criteria) {
    return "Search Criteria: " + criteria.toString();
}

标签:return,springboot,19,User,user,id,接收,public,String
From: https://www.cnblogs.com/ddcoder/p/18338015

相关文章

  • 创建xtrbackup备份用户 ERROR 1819 (HY000): Your password does not satisfy the cur
    查看密码策略mysql>SHOWVARIABLESLIKE'validate_password%';+--------------------------------------+--------+|Variable_name|Value|+--------------------------------------+--------+|validate_password_check_user_name......
  • BUUCTF [SCTF2019]babyre
    记录一下脱花指令的过程扔进ida中观察,发现有红字报错。像这种肯定是花指令用来干扰程序的,将loc_98Fnop掉即可,大概有四处这样的花指令在最后发现一段smc,因为没有解密函数,因此推测直接解密即可按d全部转化为数据,然后再按c转化为代码又出现一个花指令这个nop明显是干扰程序......
  • 【SpringBoot】集成Redis
    目录1redis1.1特点1.2支持的数据类型1.3应用场景2安装redis2.1docker3可视化软件3.1RedisDesktopManager(RDM)3.2QuickRedis(推荐)4SpringBoot集成4.1引入redis4.2.操作redis4.2.1直接操作4.3分布式会话场景(Resis-Session)1redis​ redis是一个用C语言开发的,基于内......
  • 前端使用 Konva 实现可视化设计器(19)- 连接线 - 直线、折线
    本章响应小伙伴的反馈,除了算法自动画连接线(仍需优化完善),实现了可以手动绘制直线、折线连接线功能。请大家动动小手,给我一个免费的Star吧~大家如果发现了Bug,欢迎来提Issue哟~github源码gitee源码示例地址模式切换前置工作连接线模式种类//src/Render/types.tse......
  • CF1987C Basil's Garden 题解
    CF1987CBasil'sGarden题解壹·题目描述有$n$个数字排成一排,接下来每隔一秒进行一次操作:如果$i=n$或$h_i>h_{i+1}$,则第$i$盆花的高度$h_i$将变为$\max(0,h_i-1)$。请问至少经过多少秒后,所有的数字都为$0$。贰·思路分析可以知道,$h_i\leq1$时$h_i←0$。显然可......
  • P5665 [CSP-S2019] 划分
    思路:首先求出\(a\)的前缀和数组\(s\)。考虑动态规划,令\(dp_{i,j}\)表示以\(i\)结尾,末尾有\(j\)个为一组的最小答案,则状态转移方程为:\[dp_{i,j}=\min[s_{i-j}-s_{i-j-k}\les_i-s_{i-j}]dp_{i-j,k}+(s_i-s_{i-j})^2\]朴素直接转移是\(O(N^3)\)的,可以得到......
  • 基于SpringBoot+Vue+uniapp的横向课题信息管理系统的详细设计和实现(源码+lw+部署文档
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaitsPlus系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......
  • 基于Java+SpringBoot+Vue的电竞交互管理系统设计与实现(源码+lw+部署文档+讲解等)
    文章目录前言项目运行截图技术框架后端采用SpringBoot框架前端框架Vue可行性分析系统测试系统测试的目的系统功能测试数据库表设计代码参考数据库脚本为什么选择我?获取源码前言......
  • BUUCTF [RoarCTF2019]polyre
    第一次遇到反控制流平坦化的题目,记录一下。扔进ida,发现main函数中全是while循环,后来上网查阅才发现是控制流平坦化。反控制流平坦化的教程可以参考这个blog:https://www.cnblogs.com/kelec0ka/p/17909008.html使用deflat生成recovered文件:pythondeflat.py-ftest--addr0x4......
  • CF319E-Ping-Pong【线段树】
    正题题目链接:https://www.luogu.com.cn/problem/CF319E题目大意定义一个区间\((a,b)\)能走到另一个区间\((c,d)\)当\(c<a<d,c<b<d\)。你有两个操作往集合中加入一个区间\((a,b)\),保证加入的区间长度单调递增。询问一个区间能否走到另一个区间。\(1\leqn\leq1......