In diesem Artikel erfahren Sie ausführlich, wie Spring Webanforderungsparameter in Java empfängt. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.
1 Abfrageparameter
Anfrageformat: URL?Parameter 1=Wert 1&Parameter 2=Wert 2...
Gilt für beide Es gibt mehrere Möglichkeiten, Abfrageparameter in GET- und POST-Methoden zu schreiben:
Der Name des Methodenparameters ist der Name des Anforderungsparameters
// 查询参数1 @RequestMapping(value = "/test/query1", method = RequestMethod.GET) public String testQuery1(String username, String password) { System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode 2:
Parameter extrahieren von HttpServletRequest
// 查询参数2 @RequestMapping(value = "/test/query2", method = RequestMethod.GET) public String testQuery2(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode drei:
Der Methodenparametername und der Anforderungsparametername können unterschiedlich sein, binden Sie die Parameter über die @RequestParam-Annotation
// 查询参数3 @RequestMapping(value = "/test/query3", method = RequestMethod.GET) public String testQuery3(@RequestParam("username") String un, @RequestParam("password") String pw) { System.out.println("username=" + un + ", password=" + pw); return "username=" + un + ", password=" + pw; }Methode vier:
Erstellen ein Entitätsklassenobjekt als Parameterträger, und Spring bindet die Parameter automatisch an die Eigenschaften des Entitätsklassenobjekts basierend auf dem Parameternamen
// 查询参数4 @RequestMapping(value = "/test/query4", method = RequestMethod.GET) public String testQuery4(User user) { String username = user.getUsername(); String password = user.getPassword(); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Die Entitätsklasse ist wie folgt definiert:
@Data @NoArgsConstructor @AllArgsConstructor @Builderpublic class User { private String username; private String password; }Hier verwendet Mit der Drittanbieter-Bibliothek Lombok ist es nicht erforderlich, get, set und andere Methoden manuell zum Code hinzuzufügen, Lombok wird automatisch hinzugefügt. Der Curl-Befehl zum Senden der Anfrage lautet wie folgt:
curl -i 'http://192.168.1.14:8080/test/query1?username=aaa&password=bbb'Die Interaktionsnachricht lautet wie folgt:
GET /test/query1?username=aaa&password=bbb HTTP/1.1 Host: 192.168.1.14:8080 User-Agent: curl/7.58.0 Accept: */*HTTP/1.1 200 Content-Type: text/plain;charset=UTF-8 Content-Length: 26 Date: Thu, 25 Oct 2018 07:01:30 GMT username=aaa, password=bbb
2 Formularparameter
Die Anforderungsparameter befinden sich nicht in der URL, sondern im Text. Das Format ist: URL?Parameter 1=Wert 1&Parameter 2=Wert 2...Gilt für POST Methode Die Verarbeitungsmethode für Formularparameter ist fast genau dieselbe wie die vorherige Verarbeitungsmethode für Anforderungsparameter, mit der Ausnahme, dass die Methodenmethode in der RequestMethod-Annotation auf die POST-Methode festgelegt ist Methode eins:// 表单参数1 @RequestMapping(value = "/test/form1", method = RequestMethod.POST) public String testForm1(String username, String password) { System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode zwei:
// 表单参数2 @RequestMapping(value = "/test/form2", method = RequestMethod.POST) public String testForm2(HttpServletRequest request) { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode drei:
// 表单参数3 @RequestMapping(value = "/test/form3", method = RequestMethod.POST) public String testForm3(@RequestParam("username") String un, @RequestParam("password") String pw) { System.out.println("username=" + un + ", password=" + pw); return "username=" + un + ", password=" + pw; }Methode vier:
// 表单参数4 @RequestMapping(value = "/test/form4", method = RequestMethod.POST) public String testForm4(User user) { String username = user.getUsername(); String password = user.getPassword(); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Der Curl-Anfragebefehl lautet wie folgt:
curl -X POST -i -d "username=aaa&password=bbb" http://192.168.1.14:8080/test/form1Die Anfrage- und Antwortnachricht lautet wie folgt:
POST /test/form1 HTTP/1.1 Host: 192.168.1.14:8080 User-Agent: curl/7.58.0 Accept: */* Content-Length: 25 Content-Type: application/x-www-form-urlencoded username=aaa&password=bbbHTTP/1.1 200 Content-Type: text/plain;charset=UTF-8 Content-Length: 26 Date: Thu, 25 Oct 2018 07:05:35 GMT username=aaa, password=bbb
3 Pfadparameter
Der Anfrageparameter ist Teil der URL, das Format ist : URL/Parameter 1/Parameter 2...Gilt sowohl für GET- als auch für POST-Methoden
Der Code lautet wie folgt:
@RequestMapping(value = "/test/url/{username}/{password}", method = RequestMethod.GET) public String testUrl(@PathVariable String username, @PathVariable String password) { System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Der Anforderungs-Curl-Befehl lautet wie folgt:
curl -i http://192.168.1.14:8080/test/url/aaa/bbbDie Anforderungs- und Antwortnachricht lauten wie folgt:
GET /test/url/aaa/bbb HTTP/1.1 Host: 192.168.1.14:8080 User-Agent: curl/7.58.0 Accept: */*HTTP/1.1 200 Content-Type: text/plain;charset=UTF-8 Content-Length: 26 Date: Thu, 25 Oct 2018 07:07:44 GMT username=aaa, password=bbb
4 JSON-Formatparameter
Die Anforderungsparameter befinden sich im Body und sind in JSON-Format. Anforderungsheader muss hinzugefügt werden: Content-Type: application/json;charset=UTF-8Anwendbar auf die POST-Methode
Methode 1:
Entitätsklasse definieren, JSON-Objekt in Stärkeklasse analysieren, RequestBody hinzufügen Anmerkung
// json参数1 @RequestMapping(value = "/test/json1", method = RequestMethod.POST) public String testJson1(@RequestBody User user) { String username = user.getUsername(); String password = user.getPassword(); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode 2: Wenn Sie keine Entitätsklasse definieren möchten, können Sie die JSON-Anfrage auch direkt in die JSONObject-Klasse analysieren
// json参数2 @RequestMapping(value = "/test/json2", method = RequestMethod.POST) public String testJson2(@RequestBody JSONObject json) { String username = json.getString("username"); String password = json.getString("password"); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Methode 3 : Außerdem kann das JSON-Objekt direkt in ein Kartenobjekt geparst werden
// json参数3 @RequestMapping(value = "/test/json3", method = RequestMethod.POST) public String testJson3(@RequestBody Map18fed3eaa375b9cabd6da695ec776cac userMap) { String username = userMap.get("username"); String password = userMap.get("password"); System.out.println("username=" + username + ", password=" + password); return "username=" + username + ", password=" + password; }Der Anforderungs-Curl-Befehl lautet wie folgt:
curl -X POST -i -H 'Content-Type: application/json;charset=UTF-8' -d '{ "username" : "aaa", "password" : "bbb" } 'http://192.168.1.14:8080/test/json1Die Anforderungs- und Antwortnachricht lautet wie folgt:
POST /test/json1 HTTP/1.1 Host: 192.168.1.14:8080 User-Agent: curl/7.58.0 Accept: */* Content-Type: application/json;charset=UTF-8 Content-Length: 52 { "username" : "aaa", "password" : "bbb" }HTTP/1.1 200 Content-Type: text/plain;charset=UTF-8 Content-Length: 26 Date: Thu, 25 Oct 2018 07:09:06 GMT username=aaa, password=bbb
Das obige ist der detaillierte Inhalt vonJava erklärt ausführlich, wie Spring Web-Anfrageparameter empfängt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!