SpringBoot在Controller层接参常用方法总结

SpringBoot基础使用章节,如何用各种奇妙姿势接住前端传过来的值~
获取参数方式1:获取XXX/XXX?user=XXX这种方式的参数
// 获取参数方式1:获取XXX/XXX?user=XXX这种方式的参数
    @RequestMapping("/get")
    public void get (@RequestParam(name = "user") String user){
        System.out.println("接收到参数:"+user);
        return "接收到参数:"+user;
    }

在这里插入图片描述

获取参数方式2:获取路径参数,RestFull风格入参
// 获取参数方式2:获取路径参数,RestFull风格入参
@GetMapping("/path/{user}")
    public String path(@PathVariable(name = "user") String user){
        System.out.println("接收到参数:"+user);
        return "接收到参数:"+user;
    }

在这里插入图片描述

获取参数方式3:post请求JSON数据格式,各参数名与POJO定义的字段一样
public class Users implements Serializable {
    private String name;
    private int age;
    private Character sex;
	@Override
    public String toString() {
        return "Users{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", sex=" + sex +
                '}';
    }
    }
 // 获取参数方式3:post请求JSON数据格式,各参数名与POJO定义的字段一样
    @PostMapping("/post/same")
    public String same(@RequestBody Users users){
        System.out.println("JSON 接到的:"+users.toString());
        return "JSON 接到的:"+users.toString();
    }

在这里插入图片描述

获取参数方式4:获取到请求头参数(一般权限校验可以把授权信息身份信息放header传)
@GetMapping("/heade")
    public String heade(@RequestHeader(name = "Content-Type") String contentType, @RequestHeader(name = "Authorization") String authorization){
        System.out.println(contentType+"------"+authorization);
        return contentType+"------"+authorization;
    }

在这里插入图片描述

获取参数方式5:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样(需要引入fastJson依赖)
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.57</version>
		</dependency>
@PostMapping("/fastJson")
    public String fastJson(@RequestBody JSONObject param){
        System.out.println("JSON :"+param.toJSONString());
        return "JSON :"+param.toJSONString();
    }

在这里插入图片描述

获取参数方式6:post请求JSON数据格式,各参数名与POJO定义的字段完全不一样, 通过HttpServletRequest获取(需要引入fastJson依赖)这种比较麻烦,应该正常使用都不会这样玩
@PostMapping("/httpServletRequest")
    public String httpServletRequest(HttpServletRequest param){
        JSONObject jsonParam = null;
        try {
            // 获取输入流
            BufferedReader streamReader = new BufferedReader(new InputStreamReader(param.getInputStream(), "UTF-8"));

            // 写入数据到Stringbuilder
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = streamReader.readLine()) != null) {
                sb.append(line);
            }
            jsonParam = JSONObject.parseObject(sb.toString());
            // 直接将json信息打印出来
            System.out.println("转换出来的JSON:"+jsonParam.toJSONString());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "转换出来的JSON:"+jsonParam.toJSONString();
    }

在这里插入图片描述

获取参数方式7:get或者post请求,都直接用HttpServletRequest接收
@RequestMapping("/testDemo")
    public String testDemo(HttpServletRequest request){
        String users = request.getParameter("users");
        System.out.println("参数:"+users);
        return "参数:"+users;
    }

这里注意一个误区,就是不一定get请求就只能拼接在URL后,不一定POST请求参数只能放BODY体,其实两种请求方式并无本质上区别。详情请看另外一篇博客:get和post的区别误区

在这里插入图片描述
在这里插入图片描述

获取参数方式8:get或者post请求,参数名对应的话可以直接获取
@RequestMapping("/sameParamName")
    public String sameParamName(String users , String id){
        System.out.println("users:"+users+"id: "+id);
        return "users:"+users+"id: "+id;
    }

在这里插入图片描述

以上总结就写到这里。这么多种接参方式,总有几款适合你~
PS:中软国际的面试官面试必问问题之一,他们面试官们好像都有一份面试模版,照着模版问问题的,面过两三个,提问题的方式和问题都一摸一样~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章