Heim  >  Artikel  >  Java  >  Java erklärt ausführlich, wie Spring Web-Anfrageparameter empfängt

Java erklärt ausführlich, wie Spring Web-Anfrageparameter empfängt

青灯夜游
青灯夜游nach vorne
2018-10-25 16:39:042273Durchsuche

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:

Methode 1:

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/form1
Die 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/bbb
Die 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-8

Anwendbar 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/json1
Die 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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen