SpringMvc接受請(qǐng)求參數(shù)的幾種情況演示
說(shuō)明:
通常get請(qǐng)求獲取的參數(shù)是在url后面,而post請(qǐng)求獲取的是請(qǐng)求體當(dāng)中的參數(shù)。因此兩者在請(qǐng)求方式上會(huì)有所不同。
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格式被后端獲取)
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對(duì)象創(chuàng)建的過(guò)程及內(nèi)存布局
今天給大家?guī)?lái)的文章是Java對(duì)象創(chuàng)建的過(guò)程及內(nèi)存布局,文中有非常詳細(xì)的圖文示例及介紹,需要的朋友可以參考下2021-06-06javax.validation自定義日期范圍校驗(yàn)注解操作
這篇文章主要介紹了javax.validation自定義日期范圍校驗(yàn)注解操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09idea創(chuàng)建包含多個(gè)springboot module的maven project的方法
這篇文章主要介紹了idea創(chuàng)建包含多個(gè)springboot module的maven project的方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法
本文主要介紹了mysql高版本(8.0+)group_by報(bào)錯(cuò)的處理方法,這個(gè)錯(cuò)誤一般發(fā)生在mysql 5.7以及 5.7以上的版本中,本文就來(lái)介紹一下兩種解決方法,感興趣的可以了解一下2023-09-09Java核心教程之常見(jiàn)時(shí)間日期的處理方法
這篇文章主要給大家介紹了關(guān)于Java核心教程之常見(jiàn)時(shí)間日期的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例
這篇文章主要為大家介紹了Springboot結(jié)合JDBC實(shí)現(xiàn)雙數(shù)據(jù)源實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12springboot?ErrorPageFilter的實(shí)際應(yīng)用詳解
這篇文章主要介紹了springboot?ErrorPageFilter的實(shí)際應(yīng)用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-01-01Idea中maven項(xiàng)目實(shí)現(xiàn)登錄驗(yàn)證碼功能
這篇文章主要介紹了Idea中maven項(xiàng)目實(shí)現(xiàn)登錄驗(yàn)證碼功能,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Java中StringUtils工具類的一些用法實(shí)例
這篇文章主要介紹了Java中StringUtils工具類的一些用法實(shí)例,本文著重講解了isEmpty和isBlank方法的使用,另外也講解了trim、strip等方法的使用實(shí)例,需要的朋友可以參考下2015-06-06