1. 程式人生 > >springMVC介面接受前端傳遞引數資料型別總結

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編碼的內容(及表單內容資料)

,提交方式GET、POST。

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