この記事では、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; }
// 表单参数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
リクエスト パラメータは 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
@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; }
// 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; }
// 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 サイトの他の関連記事を参照してください。