SpringMvc接受請(qǐng)求參數(shù)的幾種情況演示
說(shuō)明:
通常get請(qǐng)求獲取的參數(shù)是在url后面,而post請(qǐng)求獲取的是請(qǐng)求體當(dāng)中的參數(shù)。因此兩者在請(qǐng)求方式上會(huì)有所不同?! ?/p>
1.直接將接受的參數(shù)寫在controller對(duì)應(yīng)方法的形參當(dāng)中(適用于get提交方式)
/**
* 1.直接把表單的參數(shù)寫在Controller相應(yīng)的方法的形參中
*
* @param username
* @param password
* @return
*/
@GetMapping("/addUser1")
public String addUser1(String username, String password) {
System.out.println ("username is:" + username);
System.out.println ("password is:" + password);
return username + "," + password;
}
2.通過(guò)url請(qǐng)求路徑獲取參數(shù)
/**
* 2、通過(guò)@PathVariable獲取路徑中的參數(shù)
*
* @param username
* @param password
* @return
*/
@RequestMapping(value = "/addUser4/{username}/{password}", method = RequestMethod.GET)
public String addUser4(@PathVariable String username, @PathVariable String password) {
System.out.println ("username is:" + username);
System.out.println ("password is:" + password);
return "addUser4";
}
3.通過(guò)request請(qǐng)求對(duì)象來(lái)接受發(fā)來(lái)的參數(shù)信息(Get請(qǐng)求方式或者時(shí)Post請(qǐng)求方式都可以)
/**
* 3、通過(guò)HttpServletRequest接收
*
* @param request
* @return
*/
@RequestMapping("/addUser2")
public String addUser2(HttpServletRequest request) {
String username = request.getParameter ("username");
String password = request.getParameter ("password");
System.out.println ("username is:" + username);
System.out.println ("password is:" + password);
return "demo/index";
}
4.封裝JavaBean對(duì)象的方式來(lái)接受請(qǐng)求參數(shù)(get方式與post方式都可以)
4.1首先在模塊當(dāng)中創(chuàng)建對(duì)應(yīng)的JavaBean,并提供相應(yīng)的get,set方法。
package com.example.demo.pojo;
import lombok.Data;
@Data
public class User1 {
private String username;
private String password;
}
4.2Controller層
/**
* 4、通過(guò)一個(gè)bean來(lái)接收
*
* @param user
* @return
*/
@RequestMapping("/addUser3")
public String addUser3(User1 user) {
System.out.println ("username is:" + user.getUsername ( ));
System.out.println ("password is:" + user.getPassword ( ));
return "/addUser3";
}
5.使用注解@RequestParam注解將請(qǐng)求參數(shù)綁定到Controller層對(duì)應(yīng)方法的形參當(dāng)中
/**
* 5、用注解@RequestParam綁定請(qǐng)求參數(shù)到方法入?yún)?
* @param username
* @param password
* @return
*/
@RequestMapping(value="/addUser6",method=RequestMethod.GET)
public String addUser6(@RequestParam("username") String username,@RequestParam("password") String password) {
System.out.println("username is:"+username);
System.out.println("password is:"+password);
return "demo/index";
}
下面介紹,發(fā)送json格式的請(qǐng)求,接受數(shù)據(jù)的情況:
1.將json請(qǐng)求的key,value值封裝到實(shí)體對(duì)象的屬性當(dāng)中(通常將參數(shù)放在請(qǐng)求體body中,以application/json格式被后端獲?。?/p>
1.1創(chuàng)建一個(gè)實(shí)體類
public class User2 implements Serializable {
private static final long serialVersionUID = 1L;
@JsonProperty(value = "id")
private Integer id;
@JsonProperty(value = "name")
private String name;
@JsonProperty(value = "age")
private Integer age;
@JsonProperty(value = "hobby")
private List<String> hobby;
/**
*將json請(qǐng)求的key,value封裝到實(shí)體對(duì)象當(dāng)中。
* @param user
* @return
*/
@PostMapping("/save")
public String saveUser(@RequestBody User2 user) {
// list.add(user);
// User2 user2 = new User2 ( );
// user2.setId (user.getId ());
// user2.setAge (user.getAge ());
// user2.setName (user.getName ());
// user2.setHobby (user.getHobby ());
return "success"+user;
}
2.將json請(qǐng)求的key,value值封裝到request對(duì)象的屬性當(dāng)中(通常請(qǐng)求參數(shù)放body中,將content-type改為x-www-form-urlencoded)
/**
* 將請(qǐng)求參數(shù)封裝到request對(duì)象當(dāng)中。
* @param request
* @return
*/
@PostMapping("/save2")
public User2 save(HttpServletRequest request) {
Integer id = Integer.parseInt(request.getParameter("id"));
String name = request.getParameter("name");
Integer age = Integer.parseInt(request.getParameter("age"));
String parameter = request.getParameter("hobby");
List<String> stringList = new ArrayList<> ( );
String[] split = parameter.split (",");
for (int i = split.length - 1; i >= 0; i--) {
stringList.add (split[i]);
}
User2 user2 = new User2(id, name, age, stringList);
// list.add(user);
return user2;
}
3.通過(guò)http協(xié)議,將json參數(shù)轉(zhuǎn)成JSONOBject對(duì)象
3.1Controller層接受JSON參數(shù)
/**
* 通過(guò)http協(xié)議將參數(shù)轉(zhuǎn)為jsonobject
* @param request
* @return
* @throws IOException
* @throws JSONException
*/
@PostMapping("/save3")
public User2 save3(HttpServletRequest request) throws IOException, JSONException {
JSONObject jsonObject = handlerData(request);
Integer id = jsonObject.getInteger("id");
String name = jsonObject.getString("name");
Integer age = jsonObject.getInteger("age");
List<String> hobby = jsonObject.getObject("hobby", List.class);
User2 user3 = new User2 (id, name, age, hobby);
// list.add(user);
return user3;
}
3.2通過(guò)以下方法將Json字符串轉(zhuǎn)成Jsonobject對(duì)象
//這里使用的是alibaba的json工具類
public static JSONObject handlerData(HttpServletRequest request) throws IOException, JSONException {
StringBuffer sb = new StringBuffer();
InputStream is = request.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader (is, "utf-8"));
String s = "";
while ((s = br.readLine()) != null) {
sb.append(s);
}
if (sb.toString().length() <= 0) {
return null;
} else {
return JSONObject.parseObject(sb.toString());
}
}
4.將json格式的請(qǐng)求參數(shù)封裝到hashmap的key,value鍵-值對(duì)當(dāng)中。(json字符串串放在body中,請(qǐng)求格式為application/json格式)
/**
*將json請(qǐng)求的Key,value封裝到map的key,value當(dāng)中去。
* @param map
* @return
*/
@PostMapping("/save1")
public User2 saveUser1(@RequestBody Map<String, Object> map) {
Integer id = (Integer) map.get("id");
String name = (String) map.get("name");
Integer age = (Integer) map.get("age");
List<String> hobby=(List<String>) map.get("hobby");
User2 user = new User2(id, name, age, hobby);
// list.add(user);
return user;
}
該文檔主要是學(xué)習(xí)以下兩篇文檔的總結(jié):
https://www.cnblogs.com/lirenhe/p/10737673.html
https://blog.csdn.net/zyxwvuuvwxyz/article/details/80352712
到此這篇關(guān)于SpringMvc接受請(qǐng)求參數(shù)的幾種情況演示的文章就介紹到這了,更多相關(guān)SpringMvc請(qǐng)求參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- springmvc接口接收參數(shù)與請(qǐng)求參數(shù)格式的整理
- SpringMVC解析post請(qǐng)求參數(shù)詳解
- 使用SpringMVC 重寫、擴(kuò)展HttpServletRequest請(qǐng)求參數(shù)
- 詳解在Spring MVC或Spring Boot中使用Filter打印請(qǐng)求參數(shù)問(wèn)題
- Spring MVC請(qǐng)求參數(shù)與響應(yīng)結(jié)果全局加密和解密詳解
- 快速解決SpringMVC @RequestBody 用map接收請(qǐng)求參數(shù)的問(wèn)題
- 學(xué)習(xí)SpringMVC——如何獲取請(qǐng)求參數(shù)詳解
- Spring?MVC??接受請(qǐng)求參數(shù)的方法
相關(guān)文章
Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀
這篇文章主要介紹了Java中的字符型文件流FileReader和FileWriter詳細(xì)解讀,與字節(jié)型文件流不同,字節(jié)型文件流讀取和寫入的都是一個(gè)又一個(gè)的字節(jié),而字符型文件流操作的單位是一個(gè)又一個(gè)的字符,字符型流認(rèn)為一個(gè)字母是一個(gè)字符,而一個(gè)漢字也是一個(gè)字符,需要的朋友可以參考下2023-10-10
解決Mybatis-plus找不到對(duì)應(yīng)表及默認(rèn)表名命名規(guī)則的問(wèn)題
這篇文章主要介紹了解決Mybatis-plus找不到對(duì)應(yīng)表及默認(rèn)表名命名規(guī)則的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-11-11
Java中漢字轉(zhuǎn)拼音pinyin4j用法實(shí)例分析
這篇文章主要介紹了Java中漢字轉(zhuǎn)拼音pinyin4j用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了pinyin4j庫(kù)的具體使用技巧,需要的朋友可以參考下2015-12-12
Java數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級(jí)隊(duì)列(PriorityQueue)用法詳解
優(yōu)先級(jí)隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),操作的數(shù)據(jù)帶有優(yōu)先級(jí),這種數(shù)據(jù)結(jié)構(gòu)就是優(yōu)先級(jí)隊(duì)列(PriorityQueue)。本文將詳細(xì)講講Java優(yōu)先級(jí)隊(duì)列的用法,感興趣的可以了解一下2022-07-07
Spring boot2X Consul如何通過(guò)RestTemplate實(shí)現(xiàn)服務(wù)調(diào)用
這篇文章主要介紹了spring boot2X Consul如何通過(guò)RestTemplate實(shí)現(xiàn)服務(wù)調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
SSH框架網(wǎng)上商城項(xiàng)目第21戰(zhàn)之詳解易寶支付的流程
這篇文章主要為大家詳細(xì)介紹了SSH框架網(wǎng)上商城項(xiàng)目第21戰(zhàn)之易寶支付的流程,感興趣的小伙伴們可以參考一下2016-06-06

