1. 程式人生 > 其它 >6. SpringMVC - 請求資料 -

6. SpringMVC - 請求資料 -

客戶端請求引數的格式是:name=value&name=value… … 伺服器端要獲得請求的引數,有時還需要進行資料的封裝,

SpringMVC可以接收如下型別的引數:

1 基本型別引數

2 POJO型別引數

3 陣列型別引數

4 集合型別引數

Get 和 Post 方式都一樣 主要是 name 一定要對好來!

第一種: 請求資料 轉換成基本型別引數:

Controller中的業務方法的引數名稱要與請求引數的name一致,引數值會自動對映匹配。【是真的賊方便,但是引數的型別 和 請求的name名【鍵】 要 和 形參型別 和 形參名 一致哦.】

package com.bihu.Controller;


import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; @Controller public class TestController { @RequestMapping(value = "/go") @ResponseBody() //不進行跳轉 直接進行跳轉 // 訪問http://localhost:8080/go?name=bihu&age=18 即可,自動解析 但這裡是Get方式
public void GoUrl(String name,int age) { System.out.println(name); System.out.println(age); } }

第二種: 請求資料 轉換成 POJO型別引數

Spring 地底層已經做好很多工作,包括自動對映:

POJO是一個實體類啊【簡單的Java物件】

我們只需要用物件【物件需要有set、get 方法哦!! 】當形參 然後 直接進來的資料SpringMVC 自動對映進來注入:

Tips: 我這裡有一個 student 類 ,就一個name 和 age ,注意 一定一定 形參名 要吻合 請求name【鍵】 不然自動對映失敗

!!!!!!

package com.bihu.Controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class TestController {
    @RequestMapping(value = "/go")
    @ResponseBody() //不進行跳轉 直接進行跳轉
    // 訪問http://localhost:8080/go?name=BiHu&age=19 即可,自動解析成物件 但這裡是Get方式
    public void GoUrl(Student s)   {
        System.out.println("姓名:" + s.getName());
        System.out.println("年齡:" + s.getAge());
    }
}

主要是吻合 型別 和 名字,不然。。。。

3 請求資料過來 轉換成 陣列型別

這個也一樣的 就是說 直接陣列做形參 然後名字不對應都可以 他會自己封裝 ,但我建議陣列過來後轉成list , 轉為陣列不常用啊 一般都是物件POJO用的多:

注意啊 形參名字一定一定要和 你 請求的攜帶的資料的 鍵 一制 我說了N遍了 一直在這裡吃虧。

package com.bihu.Controller;


import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.lang.reflect.Array;
import java.util.Arrays;
import java.util.List;

@Controller
public class TestController {
    @RequestMapping(value = "/go")
    @ResponseBody() //不進行跳轉 直接進行跳轉
    // 訪問http://localhost:8080/go?strings=%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%BA%8C%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%B8%89%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E5%9B%9B%E4%B8%AA%E5%85%83%E7%B4%A0&strings=%E7%AC%AC%E4%BA%94%E4%B8%AA%E5%85%83%E7%B4%A0
    // 即可,自動解析成陣列 但這裡是Get方式 注意上面的 鍵都是 strings的 啊!
    public void GoUrl(String[] strings)   {
        //列印一下
        for (String t:strings){
            System.out.println(t);
        }
    }
}

4.