Maison > Java > javaDidacticiel > le corps du texte

Java explique en détail comment Spring reçoit les paramètres de requête Web

青灯夜游
Libérer: 2018-10-25 16:39:04
avant
2253 Les gens l'ont consulté

Cet article vous apporte une explication détaillée de la façon dont Spring reçoit les paramètres de requête Web en Java. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.

1 Paramètre de requête

Format de la requête : url?Paramètre 1=valeur 1&Paramètre 2=valeur 2...
Applicable aux deux Pour les méthodes GET et POST
il existe plusieurs façons d'écrire des paramètres de requête au printemps :

Méthode 1 :
Le nom du paramètre de méthode est le nom du paramètre de requête

  // 查询参数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;
  }
Copier après la connexion

méthode Deux :
Extraire les paramètres de 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;
  }
Copier après la connexion

Troisième méthode :
Le nom du paramètre de méthode et le nom du paramètre de requête peuvent être différents, et les paramètres sont liés via l'annotation @RequestParam

  // 查询参数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;
  }
Copier après la connexion

Méthode 4 :
Créez un objet de classe d'entité comme support de paramètre. Spring liera automatiquement les paramètres aux propriétés de l'objet de classe d'entité en fonction du nom du paramètre

  // 查询参数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;
  }
Copier après la connexion
La classe d'entité est définie comme suit :

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builderpublic class User {  
   private String username;  
   private String password;
}
Copier après la connexion
La bibliothèque tierce lombok est utilisée ici, il n'est donc pas nécessaire d'ajouter manuellement get, set et d'autres méthodes dans le code, lombok sera ajouté automatiquement.

La commande curl pour envoyer la requête est la suivante :

curl -i 'http://192.168.1.14:8080/test/query1?username=aaa&password=bbb'
Copier après la connexion
Le message d'interaction est le suivant :

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
Copier après la connexion

2 formulaire paramètres

Les paramètres de la requête ne sont pas dans l'url, mais dans le corps. Le format est : url ? Paramètre 1=valeur 1¶mètre 2=valeur 2...

Applicable à la méthode POST

La méthode de traitement des paramètres de formulaire est presque exactement la même que la méthode de traitement des paramètres de requête précédente, sauf que la méthode de méthode est définie sur la méthode POST dans l'annotation RequestMethod

Première méthode :

Méthode deux :
  // 表单参数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;
  }
Copier après la connexion

Méthode trois :
  // 表单参数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;
  }
Copier après la connexion

Méthode quatre :
  // 表单参数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;
  }
Copier après la connexion

La boucle La commande request est la suivante :
  // 表单参数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;
  }
Copier après la connexion

Demande et Le message de réponse est le suivant :
curl -X POST -i -d "username=aaa&password=bbb" http://192.168.1.14:8080/test/form1
Copier après la connexion

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
Copier après la connexion

3 Paramètre de chemin Le paramètre de requête fait partie de l'url, le format est : url/paramètre 1 /Paramètre 2...

Applicable aux méthodes GET et POST

Le code est le suivant :

La commande request curl est la suivante :
  @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;
  }
Copier après la connexion

Messages de requête et de réponse Comme suit :
curl -i http://192.168.1.14:8080/test/url/aaa/bbb
Copier après la connexion

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
Copier après la connexion

4 paramètres de format json Les paramètres de la requête sont dans le Body et sont au format json. Besoin d'ajouter un en-tête de requête : Content-Type : application/json;charset=UTF-8

Applicable à la méthode POST

Méthode 1 :
Définir la classe d'entité, analyser l'objet json dans la classe de force, besoin d'ajouter RequestBody annotation

Méthode 2 :
  // 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;
  }
Copier après la connexion

Si vous ne souhaitez pas définir de classe d'entité, vous pouvez également analyser la requête json directement dans la classe JSONObject

Méthode 3 :
  // 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;
  }
Copier après la connexion

Vous pouvez également analyser directement l'objet json en un objet Map

La commande request curl est la suivante :
  // json参数3
  @RequestMapping(value = "/test/json3", method = RequestMethod.POST)  
  public String testJson3(@RequestBody Map<String, String> userMap) {
    String username = userMap.get("username");
    String password = userMap.get("password");
    System.out.println("username=" + username + ", password=" + password);    
    return "username=" + username + ", password=" + password;
  }
Copier après la connexion

La requête et le message de réponse est le suivant :
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
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!