一、@RequestParam 註解

在處理方法入參處使用 @RequestParam 可以把請求引數傳遞給請求方法的形參。

@RequestParam 註解的作用

value=”name”    表示引數名稱。

required=true         表示如果沒有傳遞引數,則會報 400引數異常。

以下對前臺傳引數的常用方式介紹@RequestParam 註解的作用:

1、GET請求方式傳遞引數

/**
 * @RequestParam註解獲取引數(GET請求方式)
 * @param paramName
 * @return
 */
@GetMapping("/testGet1")
public String testGet1(@RequestParam("paramName") String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

前臺程式碼:

 /**
     * GET請求方式傳遞引數
     *
     * @author: chenlw
     * @date 2018/10/2  23:41
     **/
    function testGet1() {
        $.get(basePath + "/api/params/testGet1?paramName=123", {}, function (data) {
            alert("GET請求方式傳遞引數---後臺返回來的引數:" + data);
        });

        ////AJAX傳遞請求引數(GET請求方式)
//        var data = {};
//        data.paramName = "111";
//        data.paramName1 = "222";
//        $.get(basePath + "/api/params/testGet2", data, function (data) {
//            alert("AJAX傳遞請求引數(GET請求方式)---後臺返回來的引數:" + data);
//        });
    }

執行結果:

2、POST請求方式傳遞引數

後臺程式碼:

/**
 * @RequestParam註解獲取引數(POST請求方式)
 * @param paramName
 * @return
 */
@PostMapping("/testPost1")
public String testPost1(@RequestParam("paramName") String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

前臺程式碼:

/**
 * AJAX傳遞請求引數(POST請求方式)
 *
 * @author: chenlw
 * @date 2018/10/2  23:45
 **/
function testPost1() {
    var data = {};
    data.paramName = "111";
    $.post(basePath + "/api/params/testPost1", data, function (data) {
        alert("後臺返回來的引數:" + data);
    });
}

執行結果:

二、@PathVariable註解

@PathVariable註解的作用就是從URL裡面讀取引數值,可以在@RequestMapping裡面新增佔位符{paramName},還可以新增正則表示式。如http://localhost:8099/XXX/XXX/XXX/param,這個傳遞到後臺的引數值就是param。@PathVariable註解一般用於傳遞一個引數的情景,當然也可以通過URL傳遞多個引數。

1、GET請求方式傳遞引數

後臺程式碼:

/**
 * @PathVariable註解的作用就是從URL裡面讀取引數值(GET請求方式)
 * @param paramName
 * @return
 */
@GetMapping("/testGet2/{paramName}")
public String testGet2(@PathVariable String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

前臺程式碼:

/**
 * URL傳遞引數
 *
 * @author: chenlw
 * @date 2018/10/2  23:45
 **/
function testGet2() {
    $.get(basePath + "/api/params/testGet2/111112333", {}, function (data) {
        alert(" URL傳遞引數---後臺返回來的引數:" + data);
    });
}

執行結果:

2、POST請求方式傳遞引數

後臺程式碼:

/**
 * @PathVariable註解的作用就是從URL裡面讀取引數值(POST請求方式)
 * @param paramName
 * @return
 */
@PostMapping("/testPost2/{paramName}")
public String testPost2(@PathVariable String paramName){
    System.out.println("paramName:"+paramName);
    return paramName;
}

前臺程式碼:

/**
 * URL傳遞一個引數(POST請求方式)
 *
 * @author: chenlw
 * @date 2018/10/2  23:45
 **/
function testPost2() {
    ///只傳遞一個引數
    $.post(basePath + "/api/params/testPost2/111112333", {}, function (data) {
        alert(" URL傳遞一個引數(POST請求方式)---後臺返回來的引數:" + data);
    });
}

執行結果:

3、URL傳遞多個引數

後臺程式碼:

/**
 * @PathVariable註解的作用就是從URL裡面讀取引數值(GET請求方式)
 *
 * @PathVariable註解一般用於只傳遞一個引數的場景,當然也可以傳遞多個引數。
 *
 * @param param1  佔位符{}添加了正則表示式,限定5位數值,如果傳遞過來的引數不合要求則不會執行方法的程式碼。
 * @param param2
 * @return
 */
@GetMapping("/testGet2_1/{param1:[0-9]{5}}/{param2}")
public String testGet2_1(@PathVariable String param1,@PathVariable String param2){
    System.out.println("param1:"+param1);
    System.out.println("param2:"+param2);
    return param1+","+param2;
}

前臺程式碼:

/**
 * URL傳遞多個引數
 *
 * @author: chenlw
 * @date 2018/10/2  23:45
 **/
function testGet2_1() {
    ///傳遞兩個引數
    $.get(basePath + "/api/params/testGet2_1/11111/22222", {}, function (data) {
        alert(" URL傳遞引數---後臺返回來的引數:" + data);
    });
}

執行結果:

三、SpringMVC的自動匹配

1、GET請求方式傳遞引數

後臺程式碼:

/**
 * springMVC的自動匹配引數(GET請求方式)
 *
 * 形參paramName會自動匹配請求中key為paramName的引數值。
 *
 * 可以接收AJAX封裝的請求引數
 *
 * @param paramName
 */
@GetMapping("/testGet3")
public String testGet3(String paramName,String paramName1, Model model){
    System.out.println("paramName:"+paramName);
    System.out.println("paramName1:"+paramName1);
    model.addAttribute("paramName",paramName);
    return paramName;
}

前臺程式碼:

/**
 * SpringMVC自動匹配引數(GET請求方式)
 *
 * @author: chenlw
 * @date 2018/10/2  23:40
 **/
function testGet3() {
    $.get(basePath + "/api/params/testGet3?paramName=111&paramName1=222", {}, function (data) {
        alert("SpringMVC自動匹配引數---後臺返回來的引數:" + data);
    });

}

執行結果:

2、POST請求方式傳遞引數

後臺程式碼:

/**
 * springMVC的自動匹配引數(POST請求方式)
 *
 * 形參paramName會自動匹配請求中key為paramName的引數值。
 *
 * 可以接收AJAX封裝的請求引數
 *
 * @param paramName
 */
@PostMapping("/testPost3")
public String testPost3(String paramName,String paramName1, Model model){
    System.out.println("paramName:"+paramName);
    System.out.println("paramName1:"+paramName1);
    model.addAttribute("paramName",paramName);
    return paramName;
}

前臺程式碼:

/**
 * SpringMVC自動匹配引數(POST請求方式)
 *
 * @author: chenlw
 * @date 2018/10/2  23:40
 **/
function testPost3() {
    $.post(basePath + "/api/params/testPost3?paramName=111&paramName1=222", {}, function (data) {
        alert("SpringMVC自動匹配引數---後臺返回來的引數:" + data);
    });

}

執行結果:

四、SpringMVC的自動裝箱(實體類接收引數)

實體類定義如下:

@Data
@Accessors(chain = true)
public class ParamsEntity {

    String param1;
    String param2;

}

1、GET請求方式傳遞引數

後臺程式碼:

/**
 * SpringMVC的自動裝箱(GET請求方式)
 *
 * SpringMVC會把請求引數裝箱到實體類的屬性當中,屬性名稱就是引數名稱
 *
 * @param paramsEntity
 * @return
 */
@GetMapping("/testGet4")
public String testGet4(ParamsEntity paramsEntity){
    System.out.println("params:"+paramsEntity.toString());
    return paramsEntity.toString();
}

前臺程式碼:

/**

     * SpringMVC自動裝箱(GET請求方式)

     *

     * @author: chenlw

     * @date 2018/10/2  23:40

     **/

    function testGet4() {

        var data = {};

        data.param1 = "123";

        data.param2 = "2233";

        $.get(basePath + "/api/params/testGet4", data, function (data) {

            alert("SpringMVC自動裝箱---後臺返回來的引數:" + data);

        });



        ///使用GET請求方式傳遞引數

        //SpringMVC自動裝箱也可以把GET請求的引數自動裝箱,將引數值裝箱到實體類對應的屬性上。

//        $.get(basePath + "/api/params/test4?param1=11111&param2=22222", {}, function (data) {

//            alert("後臺返回來的引數:" + data);

//        });

    }

執行結果:

2、POST請求方式傳遞引數

後臺程式碼:

/**
 * SpringMVC的自動裝箱(POST請求方式)
 *
 * SpringMVC會把請求引數裝箱到實體類的屬性當中,屬性名稱就是引數名稱
 *
 * @param paramsEntity
 * @return
 */
@PostMapping("/testPost4")
public String testPost4(ParamsEntity paramsEntity){
    System.out.println("params:"+paramsEntity.toString());
    return paramsEntity.toString();
}

前臺程式碼:

/**
 * SpringMVC自動裝箱(POST請求方式)
 *
 * @author: chenlw
 * @date 2018/10/2  23:40
 **/
function testPost4() {
    var data = {};
    data.param1 = "123";
    data.param2 = "2233";
    $.post(basePath + "/api/params/testPost4", data, function (data) {
        alert("SpringMVC自動裝箱---後臺返回來的引數:" + data);
    });
}

執行結果:

五、結言

以上幾種就是常用的後臺接收前臺請求引數的方法。