SpringMVC後臺接收引數的幾種方式
阿新 • • 發佈:2018-12-13
一、@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¶mName1=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¶mName1=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¶m2=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);
});
}
執行結果:
五、結言
以上幾種就是常用的後臺接收前臺請求引數的方法。