springMVC介面接受前端傳遞引數資料型別總結
最近專案中處理前臺資料時突然發現比較模糊這些概念,所以總結如下:
目錄
一、springMVC中controller引數是自動注入
在springMVC中,controller中方法的引數是自動注入的,在使用註解的方式下,通常有:
@RequestParam: 取querystring當中的引數
@PathVariable: 取 在@RequestMapping中定義的佔位符中的引數(/test/{id})
@RequestBody: 取request 這個訊息體 (可以組裝json物件)
在不使用註解的情況下,預設有一些物件可以自動注入如:
HttpServletRequest
HttpServletResponse
MultipartFile
MultipartRequest
除此之外不使用註解的情況下,也可以接受前臺傳入的querystring中的引數。
二、 接受前端傳遞的物件
1、從querystring中的引數中獲取:
@RequestParam:接受物件型別(Integer、String、Boolean等基本資料型別),不能接收自定義型別。
不帶註解:接受基本資料型別,若接收型別為自定義型別,會組裝引數中與自定義型別屬性名和型別相符的引數。
這種方式總結:
(1).獲取自定義型別的物件時,不使用註解即可以獲取
(2).在組裝物件時可以使用以被獲取過的引數
注意:$.ajax contenType是appliation/json的時候,在後臺用spring mvc的@Requestparam註解接收引數,始終接收不到。因為@RequestParam 底層是通過request.getParameter方式獲得引數的,也就是說,@RequestParam 和 request.getParameter是同一回事。
所以@RequestParam可以處理get 方式中queryString的值,也可以處理post方式中 body data的值。@RequestParam用來處理Content-Type: 為 application/x-www-form-urlencoded編碼的內容(及表單內容資料)
2、從請求體(body)中獲取(及獲取物件資料)
當請求體中是一段json資料時,@RequestBody會解析該json字串並將其注入指定的自定義型別中。
通過@RequestBody的方式可以接收以json資料傳輸的物件,但前提是請求的Content-Type必須為application/json,並且引入了jackson-databind包
注意:
[email protected]該註解常用來處理Content-Type: 不是application/x-www-form-urlencoded編碼的內容,例如application/json, application/xml等;
[email protected]接收的是一個Json物件的字串,而不是一個Json物件。在ajax請求往往傳的都是Json物件,用 JSON.stringify(data)的方式就能將物件變成字串。
3.不使用@RequestBody註解時,可以接收Content-Type為application/x-www-form-urlencoded型別的請求所提交的資料,資料格式:aaa=111$bbb=222。form表單提交以及jQuery的$.post()方法所傳送的請求就是這種型別。例如後臺介面接收資料的物件前不加@RequestBody修飾。
3、接收前端傳遞的陣列
接收陣列可以使用註解方式的@RequestParam、@RequestBody或者無註解的方式,也可以同時使用他們三個
在接受陣列時,預設按照方法的引數名來對映請求的引數,目前很多前端框架喜歡傳遞陣列時在請求引數後面加上"[]",所以使用@RequestParam時可以規定value使之對應如@RequestParam("ids[]") Integer[] ids。
三、總結
由上可知道,後臺需要處理什麼資料,或者需要前臺需要傳遞什麼型別的資料時,我們既可以根據這些特性來判斷,而不會導致有時contentType不一致,甚至不知道自己需要前端傳什麼樣型別的資料格式等等。
相關推薦
springMVC介面接受前端傳遞引數資料型別總結
最近專案中處理前臺資料時突然發現比較模糊這些概念,所以總結如下: 目錄 三、總結 一、springMVC中controller引數是自動注入 在springMVC中,controller中方法的引數是自動注入的,在使用註解的方式下,通常有:
後端接受前端的引數型別(前端傳遞引數給後端)
引數傳遞形式: Get請求 引數放到url後面,用&隔開即可 Post請求 傳遞的引數的形式就比較多了。。。。 一、普通的鍵值對引數: get請求實質也是鍵值對的形式 二、list傳值 也可以把list物件放到物件裡面
SpringMVC作為Controller向前端傳遞JSON資料,前端用Extjs接收
由於專案需求,前端使用Extjs的treePanel元件做選單,一個與後臺互動的樹形選單需要三個重要的元件: 1、model:model作為資料來源,是將後臺傳過來的json資料與前端統一。 例如:後臺獲取到一組物件集合List< User >,
Springmvc——Controller接受各類請求引數
url傳送過來的請求攜帶的引數多種多樣,SpringMVC提供了諸多註解來解析引數。期目的就是 把控制器從複雜的Servlet API中剝離開來,解耦合,這樣就可以在非web容器環境中重用控制器,也方便測試。 請求引數大致可分為5種: 普通請求引數 需要@RequestP
實體類接收不到前端傳遞的資料
如果是檔案上傳頁面,前端的檔案頭設定了 enctype="multipart/form-data" 那麼必須在spring配置檔案裡配置 <!--檔案上傳--> <bean id="multipartResolver" class="org.springframewo
mybatis從mapper介面傳遞引數到XML總結
(1)介面傳遞一個變數到xml 介面 selectByPrimaryKey(String id); 對應xml <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType=
關於SSM中的Controller傳遞引數的型別的問題
在SSM專案中如果你想利用mybatis進行搜尋結果的話,引數並不一定都要穿進去,才能查詢結果,有時候我想利用一個引數得到一個集合,或者利用另一個引數得到一個物件,那麼在宣告變數的時候最後利用物件的
前端筆記49——資料型別
資料型別的分類 Number–>數字型別 String–>字串型別 Boolean–>布林型別 Null -->空 Undefined -->未定義 Object --> 物件 typeof 操作符
前端傳遞引數包含+%等特殊字元的時候後臺獲取不到的問題
public static String stringUncode(String param) { if (param != null && !param.trim()
servlet向前端傳遞json資料
servlet向前端返回json資料 可傳送單個物件和集合(list等),這裡給出模板,json轉換用的是阿里巴巴的fastjson,其他json包類似。 protected void getJson(HttpServletRequest request
AngularJS $http post 傳遞引數資料
在cordova開發的時候使用到了$http的post方法,傳遞的引數服務端怎麼都接收不到,搜尋了下,發現使用AngularJS通過POST傳遞引數還是需要設定一些東西才可以! 1、不能直接使用params 例如: $http({ method:
Android知識點總結(九)Intent可以傳遞哪些資料型別
相關文章: Intent傳遞資料時,下列的資料型別哪些可以被傳遞(abcd)(多選) A、Serializable B、charsequence C、Parcelable D、Bundle 除了上面的還能傳遞基本資料型別(byte/bo
js傳遞引數時型別錯誤
今天寫程式碼添加了以下一段程式碼,欄位值是後臺傳遞的,格式的‘0000000XX’的字串形式,但是觸發函式時,把引數當成了整型值,傳遞之後結果就是XX的值,後來看了一下生成的html文件,發現在動態新
springMVC重定向redirect傳遞引數
@RequestMapping(value = "/submit") public String submit(RedirectAttributes attr,HttpServletRequest request) throws IOExceptio
JSF與ajax使用h:messages 在commandButton上互動的問題以及在JSF前端使用ENUM資料型別
Ok, here is the final way:- Register the standard enum converter in faces-config.xml (optional): <converter><converter-for-class>java.lang.Enu
後臺如何向前端傳遞JSON資料(Servlet傳向jsp頁面)
JSON是目前最受歡迎的資料格式了,深受廣大程式設計師的喜愛,下面咱們看看如何傳遞JSON資料。 需要匯入fastjson包下載地址 具體程式碼實現 String jsonStr =
mysql 資料型別總結
mysql 資料型別總結 數值型 整形(以下為signed,unsigned為無符號,自推) 型別 佔用位元組 範圍 tinyint 1 (-128,127)
Python基礎學習篇-7-各種資料型別總結(一)
Python3 中有六個標準的資料型別: Number(數字) String(字串) List(列表) Tuple(元組) Set(集合) Dictionary(字典) 其中: 不可變資料(3 個):Number(數字
day14 基本資料型別總結
基本資料型別分類 1.可變與不可變 可變:字典、列表 不可變:數字、字串、元組 name = 'alex' print(name) print(id(name)) ##輸處name在記憶體中的地址 name = 'hell0' ##修改name變數 prin
win32資料型別總結
win32資料型別一覽 Windows資料型別 本質型別 位元組數 定義過程(來歷) 含義 ATOM unsigned short 2 unsigned short→WORD→ATOM 在Atom表中,一鍵(16位整數)一值(一個String)為一個Atom。 BOOL