ホームページ  >  記事  >  Java  >  Java は Spring が Web リクエストパラメータを受け取る方法を詳しく説明しています

Java は Spring が Web リクエストパラメータを受け取る方法を詳しく説明しています

青灯夜游
青灯夜游転載
2018-10-25 16:39:042258ブラウズ

この記事では、Spring が Java で Web リクエスト パラメーターを受け取る方法について詳しく説明します。困っている友人は参考にしていただければ幸いです。

1 クエリ パラメータ

リクエスト形式: url?パラメータ 1=値 1&パラメータ 2=値 2...
両方に適用されますGET メソッドと POST メソッドの場合
Spring でクエリ パラメーターを記述する方法はいくつかあります:

方法 1:
メソッド パラメーター名はリクエスト パラメーター名です

  // 查询参数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;
  }

方法 2:
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;
  }

方法 3:
メソッド パラメータ名とリクエスト パラメータ名は異なる場合があり、パラメータは @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;
  }

方法 4:
パラメータ キャリアとしてエンティティ クラス オブジェクトを作成します。Spring はパラメータ名に基づいてパラメータをエンティティ クラス オブジェクトのプロパティに自動的にバインドします。エンティティ クラスは次のように定義されます。 :

  // 查询参数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;
  }

ここで使用 サードパーティ ライブラリ lombok を使用すると、get、set およびその他のメソッドをコードに手動で追加する必要がなく、lombok が自動的に追加されます。

リクエストを送信するためのcurlコマンドは次のとおりです:

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builderpublic class User {  
   private String username;  
   private String password;
}

対話型メッセージは次のとおりです:

curl -i 'http://192.168.1.14:8080/test/query1?username=aaa&password=bbb'

2 フォームパラメータ リクエスト パラメータは URL ではなく本文にあります。形式は url? パラメータ 1=値 1&パラメータ 2=値 2...

POST に適用されます。 Method

フォーム パラメーターの処理メソッドは、前のリクエスト パラメーターの処理メソッドとほぼ同じですが、メソッド メソッドが RequestMethod アノテーション

メソッド 1:

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:

  // 表单参数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;
  }

方法 3:

  // 表单参数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;
  }

方法 4:

  // 表单参数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;
  }
##curl リクエスト コマンドは次のとおりです:

  // 表单参数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;
  }
リクエストとレスポンスのメッセージは次のとおりです:

curl -X POST -i -d "username=aaa&password=bbb" http://192.168.1.14:8080/test/form1

3 パス パラメータ

リクエスト パラメータは URL の一部であり、形式は次のとおりです。 : URL/パラメータ 1/パラメータ 2...GET メソッドと POST メソッドの両方に適用可能

コードは次のとおりです:

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

リクエストのcurlコマンドは次のとおりです:
  @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;
  }
リクエストとレスポンスのメッセージは次のとおりです:

curl -i http://192.168.1.14:8080/test/url/aaa/bbb

#4 json 形式のパラメータ

#リクエスト パラメータは本文にあり、 json形式。リクエスト ヘッダーを追加する必要があります: Content-Type: application/json;charset=UTF-8POST メソッドに適用可能メソッド 1:エンティティ クラスを定義し、json オブジェクトを強度クラスに解析し、RequestBody を追加する必要があります注釈

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

方法 2:

エンティティ クラスを定義したくない場合は、json リクエストを直接 JSONObject クラスに解析することもできます。

  // 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;
  }
方法 3 :

また、json オブジェクトを直接解析して Map オブジェクトにすることもできます。

  // 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;
  }
リクエストのcurlコマンドは次のとおりです:

  // 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;
  }
リクエストと応答のメッセージは次のとおりです。

rree

以上がJava は Spring が Web リクエストパラメータを受け取る方法を詳しく説明していますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。