国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 親測SpringBoot參數傳遞及@RequestBody注解---踩過的坑及解決

親測SpringBoot參數傳遞及@RequestBody注解---踩過的坑及解決

2022-02-25 00:33fengzyf Java教程

這篇文章主要介紹了親測SpringBoot參數傳遞及@RequestBody注解---踩過的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

SpringBoot 參數傳遞及@RequestBody注解注意點

前臺正確的js書寫格式是

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//點擊查詢, 執行下面這個函數
$("#searchByCriteria").click(function () {
     //var paramdata = $("#bck_qry_criteria_form").serializeJson();//serializeJson()是自定義的form 格式化為json函數
     var paramdata = {
         type:$("#bck_type").val(),
         title:$("#bck_title").val(),
         start:$("#bck_start").val(),
         end:$("#bck_end").val()
     };
     paramdata = JSON.stringify(paramdata);
     $.ajax({
         type: "post",
         data: paramdata,
         url: "/getNews",
         cache:false,
         headers : {"Content-Type" : "application/json;charset=utf-8"},
         success: function (data) {
             var code = data.code;
             var t = data.t;
             if (code == 200){alert(JSON.stringify("提交成功! 我們會盡快聯系您!"));}
             if (code == 500){alert(JSON.stringify(t));}
             //$("#input_phone").val("");//清空輸入框
         }
     })
 });

上面中傳遞的參數一定要用JSON.stringify(paramdata); 方法將參數轉換成json格式的字符串; 因為SpringBoot 中@RequestBody注解要求的必須是json格式的字符串才能注入參數, 第二就是大坑, 大坑, 大坑, 請求中必須 帶上請求頭,不然會報下面錯誤

org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

后臺正確的Controller書寫格式是

其中consumes = “application/json”, 規范的講是要加的, 它規范了,前臺要傳遞json格式的參數. 但是如果你不加也是可以的, 親測不加也能封裝到參數.NewsParamsMap中屬性

?
1
2
3
4
5
6
@PostMapping(value = "/getNews",  consumes = "application/json")
@ResponseBody
public PageInfo<NewsList> getNewsList(@RequestBody NewsParamsMap map){
    System.out.println("這是正確的用法");
    return null;
}

NewsParamsMap 中有Integer 有Date, 前臺傳過來都是字符串, springboot,會根據名稱一一對應, 將數據轉換成相應的類型.

?
1
2
3
4
5
6
7
8
9
public class NewsParamsMap {
    private Integer type;
    private String title;
    private Date start;
    private Date end;
   ...
   set get 方法
   ...
}

親測SpringBoot參數傳遞及@RequestBody注解---踩過的坑及解決

親測SpringBoot參數傳遞及@RequestBody注解---踩過的坑及解決

RequestBody 作為參數使用

最近在接收一個要離職同事的工作,接手的項目是用SpringBoot搭建的,其中看到了這樣的寫法:

在CODE上查看代碼片 派生到我的代碼片

?
1
2
3
4
5
6
@RequestMapping("doThis"
public String doThis(HttpServletRequest request, 
        @RequestParam("id") Long id, // 用戶ID 
        @RequestParam("back_url") String back_url, // 回調地址          
        @RequestBody TestEntity json_data // json數據,對于java實體類 
){//...

這個是一個請求映射方法,然后用瀏覽器輸入url:

http://127.0.0.1:8080/test/doThis?id=1&back_url=url&json_data={"code":2,"message":"test"}

在這個方法中,使用@RequestParam獲取參數,然后使用@RequestBody對json格式的參數轉換為Java類型

在運行的時候發現報錯:Required request body is missing

@RequestBody的使用需要加載MappingJackson2HttpMessageConverter,但是SpringBoot的官方文檔提到,這個是默認已經加載的了,而且json字符串和javabean也沒有書寫的錯誤

因此考慮到應該是請求Content-Type的問題,因為使用瀏覽器輸入url的方式沒有辦法定義Content-Type,因此spring無法發現request body

為了證實這個想法,自己書寫一個請求類

在CODE上查看代碼片 派生到我的代碼片

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
String add_url = "http://127.0.0.1:8080/test/doThis"
   URL url = new URL(add_url); 
   HttpURLConnection connection = (HttpURLConnection)url.openConnection(); 
   connection.setDoInput(true); 
   connection.setDoOutput(true); 
   connection.setRequestMethod("POST"); 
   connection.setUseCaches(false); 
   connection.setInstanceFollowRedirects(true); 
   connection.setRequestProperty("Content-Type","application/json"); 
   connection.connect(); 
   DataOutputStream out = new DataOutputStream(connection.getOutputStream()); 
   JSONObject obj = new JSONObject(); 
      
   obj.put("code", -1002);      
   obj.put("message", "msg"); 
   out.writeBytes(obj.toString()); 
   out.flush(); 
   out.close();

請求還是失敗,經過調試,發現需要去掉所有的@RequestParam注解才能成功

小結一下

1、@RequestBody需要把所有請求參數作為json解析,因此,不能包含key=value這樣的寫法在請求url中,所有的請求參數都是一個json

2、直接通過瀏覽器輸入url時,@RequestBody獲取不到json對象,需要用java編程或者基于ajax的方法請求,將Content-Type設置為application/json

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/fengzyf/article/details/83549830

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产又色又爽又黄又免费 | 日韩精品一区二区三区在线观看 | 久久久天堂国产精品 | 色偷偷888欧美精品久久久 | 欧美日韩亚洲一区二区 | 国产视频一区在线 | 爱操在线 | 网站黄色在线观看免费 | 中文字幕av在线 | 国产日韩精品在线观看 | 精品午夜久久 | 国产成人一级片 | av网站在线播放 | 在线免费黄色 | 亚洲免费在线视频 | 欧美日韩一区二区三区在线电影 | 亚洲成人精品视频 | 亚洲精品成人av | 欧美一区二区三区在线观看视频 | 九色91九色porny永久 | 激情欧美日韩一区二区 | 欧美日韩国产精品一区二区 | 日韩欧美一二三 | 欧美日韩有码 | 精品一区二区久久久久久久网站 | 99久久免费精品 | 国产一区二区三区高清 | 这里只是精品 | 久久久激情 | 超碰天天| 极品粉嫩饱满一线天在线 | 亚洲成人一区二区三区在线观看 | 亚洲影视一区 | 日韩福利在线 | 欧美精品三区 | 欧美黄色成人 | 久久久久久综合 | 一区二区自拍 | 精品在线 | 中文字幕一区二区av | 成人在线免费观看小视频 |