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:中軟國際的面試官面試必問問題之一,他們面試官們好像都有一份面試模版,照着模版問問題的,面過兩三個,提問題的方式和問題都一摸一樣~~~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章