Spring@RequestParam@Request Body@PathVarableなどのパラメータバインディングの説明
7324 ワード
引用:
プロジェクトでは常に各種パラメータが使われていますので、昨日は先端と機能が必要です.データを受け取る時にいくつかのパラメータを使って、時間がかかりました.
プロフィール: request uri部分を処理します. 注:@PathVarable; 処理request header部分 注:@Request Header、@Cookie Value; レキシストボディの部分を処理します. 注:@Request Param、 @Request Body 処理atributeタイプ 注:@Session Attributes、@ModelAttribute; @PathVarable
@Request Mapping URI templateを使用してマッピングすると、すなわちhttp://localhost:8080/demo/{paramId}この時のparamIdは@Pathvariableによってくくり付けられ、それが伝えられた値を方法のパラメータに加えることができます.
サンプルコード:
@Request Header注解は、Request要求header部分の値を方法のパラメータに結び付けることができます.
サンプルコード:
これはRequestのheaderの部分です.
@Cookie ValueはRequest headerの中のcookieに関する値を方法のパラメータに結び付けることができます.
例えば、次のようなCookie値があります.
[java] view plin
copy
JSESSIONID=415 A 4 AC 178 C 59 DACE 0 B 2 C 9 CA 727 CDD 84 パラメータバインディングのコード:
[java] view plin
copy
@Request Mapping('/displayHeaderInfo.do) public void displayHeader Info(@Cookie Value(「JSESSIONID」) String クッキー) { //... ) JSESSIONIDの値をパラメータクッキーに結び付けます.
@Request Param、@Request Body
@Request Param
1、簡単なタイプのバインディングを一般的に処理し、Request.getParameeter()によって取得されたStringを直接簡単なタイプに変換することができる場合(String->簡単なタイプの変換操作はCoversion Serviceによって構成された変換器で行うことができる).request.get Parameeter()方式でパラメータを取得するので、get方式のqueryStringの値を処理しても良いし、post方式のbody dataの値を処理しても良いです.
2、コンテント-Typeを処理するために使用されます.
3、この注釈には二つの属性があります.value、required.valueは着信値のID名を指定し、パラメータがバインディングされているかどうかを示すためにrequiredを使用します.
サンプルコード:
[java] view plin
copy
@Controller @Request Mapping(「/pets」) @Session Attributes(「pet」) public クラス EditPet Form { @Request Mapping = Request Method.GET) public String setupForm(@Request Param(「petId」) 要点 petId、 ModelMap モデル { ピート pet = this.clinic.loadPet(petId) model.addAttribute(「pet」、 pet) return 「petForm」 } // ... @Request Body
1、この注釈は常にContentt-Typeを処理するために用いられる.
2、HandlerAdapter構成の
3、実はこれも@Request Body String jsonを受け取ることができます.@Request Body Map mapは、受信文字列が最も原始的ですが、利用可能性はそれほど大きくないと思います.一般的に配置ファイル(文末添付)に作成されています.json文字列は直接mapまたはclassに変換できます.
サンプルコード:
copy
@Request Mapping(value) = 「/something」) public void handle(@Request Body) Adminstaff staffModel){ // ) ここでちょっと説明します.
@Request Bodyが受けるべきパラメータはstring化されたjsonであり、key=valueという表記は要求urlに含まれてはいけません.すべての要求パラメータはjsonです.ここではJSON.stingify(json)という方法を直接使って転化します.
もう一つ大事なのがあります.
ここでは、@Request Body String mobile@Request Body String passwordは、私もずっとnullでした.
@Session Attributes、@ModelAttribute
@Session Attributes:
この注釈はHttpSessionの中のatributeオブジェクトの値を結びつけるために用いられ、方法中のパラメータで使用しやすい.
この注釈はvalue、typesの2つの属性があり、名前とタイプによって使用するatributeオブジェクトを指定できます.
サンプルコード:
[java] view plin
copy
@Controller @Request Mapping('/edit Pet.do) @Session Attributes(「pet」) public クラス EditPet Form { // ... ) @ModelAttribute
この注釈は2つの用法があり、一つは方法に用いられ、一つはパラメータに用いられる.
方法に使う時: 通常は@Request Mappingを処理する前に、バインディングを要求するためにバックグラウンドから照会するmodelが必要である.
パラメータに使用する場合:名前に対応して、該当する名前の値を注釈のパラメータbeanに結びつけるために使用します.結合する値は以下の通りです.
1、@Session Attributesで有効にされているatributeの対象に;
2、@ModelAttributeはメソッド上で指定されたmodelオブジェクトに使用されます.
3、上記の2つの状況がない場合、newはバインディングされたbeanオブジェクトを一つ必要とし、その後、requestの名前に対応する方法で、値をbeanにバインドする.
使用方法上@ModelAttributeの例コード:
[java] view plin
copy
// Add one atribute // The return value 保存先 the method is added ト the モデル アンダー?デ the name 「account」 // You can customize the name via @ModelAttribute(「myAccent」) @ModelAttribute public Acceount addAcceount(@Request Param String number { return account Manager.findAcceount(number); ) この方法の実際の効果は、@Request Mappingのメソッドを呼び出す前に、requestオブジェクトのmodel里put(「account」、Acceount)です.
パラメータに使用する@ModelAttributeの例コード:
[java] view plin
copy
@Request Mapping(value="/owners/{weners}/pets/{petId}/edit} method = Request Method.POST) public String processSubmit(@ModelAttribute) ピート pet) { ) まず、@Session AttributesにバインディングされているPetオブジェクトがあるかどうかを調べ、ない場合は@ModelAttributeメソッドレベルでPetオブジェクトがバインディングされていますか?ない場合はURI templateの値を対応する名前でPetオブジェクトの各属性に結び付けます.
補足解説:
問題:注釈が与えられていない場合、パラメータはどのように結合されますか?
バインディングするオブジェクトの場合、簡単なタイプ: @Request Paramを呼び出して処理します.
バインディングするオブジェクトの場合、複雑なタイプ: @ModelAttributeを呼び出して処理します.
ここでの簡単なタイプとは、javaのオリジナルタイプ(bolean,intなど)、元のタイプのオブジェクト(Boolean,Intなど)、String,Dateなどを指します.Springは、直接Stringからターゲットオブジェクトに変換できるタイプです.
原文の住所:http://blog.csdn.net/walkerjong/article/details/7946109/
===============================設定ファイル===============================================================================
プロジェクトでは常に各種パラメータが使われていますので、昨日は先端と機能が必要です.データを受け取る時にいくつかのパラメータを使って、時間がかかりました.
プロフィール:
@Request Mapping URI templateを使用してマッピングすると、すなわちhttp://localhost:8080/demo/{paramId}この時のparamIdは@Pathvariableによってくくり付けられ、それが伝えられた値を方法のパラメータに加えることができます.
サンプルコード:
@Controller
@RequestMapping("/owners/{paramId}")
public class RelativePathUriTemplateController {
@RequestMapping("/pets/{petId}")
public void findPet(@PathVariable String paramId, @PathVariable String petId, Model model) {
// implementation omitted
}
}
@Request Header、@Cookie Value@Request Header注解は、Request要求header部分の値を方法のパラメータに結び付けることができます.
サンプルコード:
これはRequestのheaderの部分です.
Host localhost:8080
Accept text/html,application/xhtml+xml,application/xml;q=0.9
Accept-Language fr,en-gb;q=0.7,en;q=0.3
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 300
@RequestMapping("/displayHeaderInfo.do")
public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,
@RequestHeader("Keep-Alive") long keepAlive) {
//...
}
上記のコードは、request header部分のAccept-Enccodingの値をパラメータencodingに結び付けました.Keep-live headerの値はパラメータkeep Aliveに結び付けられます.@Cookie ValueはRequest headerの中のcookieに関する値を方法のパラメータに結び付けることができます.
例えば、次のようなCookie値があります.
[java] view plin
copy
JSESSIONID=415 A 4 AC 178 C 59 DACE 0 B 2 C 9 CA 727 CDD 84 パラメータバインディングのコード:
[java] view plin
copy
@Request Mapping('/displayHeaderInfo.do) public void displayHeader Info(@Cookie Value(「JSESSIONID」) String クッキー) { //... ) JSESSIONIDの値をパラメータクッキーに結び付けます.
@Request Param、@Request Body
@Request Param
1、簡単なタイプのバインディングを一般的に処理し、Request.getParameeter()によって取得されたStringを直接簡単なタイプに変換することができる場合(String->簡単なタイプの変換操作はCoversion Serviceによって構成された変換器で行うことができる).request.get Parameeter()方式でパラメータを取得するので、get方式のqueryStringの値を処理しても良いし、post方式のbody dataの値を処理しても良いです.
2、コンテント-Typeを処理するために使用されます.
application/x-www-form-urlencoded
符号化の内容、提出方式GET、POST.3、この注釈には二つの属性があります.value、required.valueは着信値のID名を指定し、パラメータがバインディングされているかどうかを示すためにrequiredを使用します.
サンプルコード:
[java] view plin
copy
@Controller @Request Mapping(「/pets」) @Session Attributes(「pet」) public クラス EditPet Form { @Request Mapping = Request Method.GET) public String setupForm(@Request Param(「petId」) 要点 petId、 ModelMap モデル { ピート pet = this.clinic.loadPet(petId) model.addAttribute(「pet」、 pet) return 「petForm」 } // ... @Request Body
1、この注釈は常にContentt-Typeを処理するために用いられる.
application/x-www-form-urlencoded
符号化された内容ではなく、例えば、appication/json、appication/xmlなど.2、HandlerAdapter構成の
HttpMessageConverters
を使用してpost data bodyを解析し、対応するbeanにバインドする.3、実はこれも@Request Body String jsonを受け取ることができます.@Request Body Map mapは、受信文字列が最も原始的ですが、利用可能性はそれほど大きくないと思います.一般的に配置ファイル(文末添付)に作成されています.json文字列は直接mapまたはclassに変換できます.
サンプルコード:
public class AdminStaff {//
private String mobile;
private String password;
private String email;
}
var staff = new Object();// js
staff.mobile = this.usermobile;
staff.password = this.userpass;
// this.$router.push('/')
this.$http.post('http://localhost/huihui-admin/login', JSON.stringify(staff) ).then()
[java] view plincopy
@Request Mapping(value) = 「/something」) public void handle(@Request Body) Adminstaff staffModel){ // ) ここでちょっと説明します.
@Request Bodyが受けるべきパラメータはstring化されたjsonであり、key=valueという表記は要求urlに含まれてはいけません.すべての要求パラメータはjsonです.ここではJSON.stingify(json)という方法を直接使って転化します.
もう一つ大事なのがあります.
ここでは、@Request Body String mobile@Request Body String passwordは、私もずっとnullでした.
@Session Attributes、@ModelAttribute
@Session Attributes:
この注釈はHttpSessionの中のatributeオブジェクトの値を結びつけるために用いられ、方法中のパラメータで使用しやすい.
この注釈はvalue、typesの2つの属性があり、名前とタイプによって使用するatributeオブジェクトを指定できます.
サンプルコード:
[java] view plin
copy
@Controller @Request Mapping('/edit Pet.do) @Session Attributes(「pet」) public クラス EditPet Form { // ... ) @ModelAttribute
この注釈は2つの用法があり、一つは方法に用いられ、一つはパラメータに用いられる.
方法に使う時: 通常は@Request Mappingを処理する前に、バインディングを要求するためにバックグラウンドから照会するmodelが必要である.
パラメータに使用する場合:名前に対応して、該当する名前の値を注釈のパラメータbeanに結びつけるために使用します.結合する値は以下の通りです.
1、@Session Attributesで有効にされているatributeの対象に;
2、@ModelAttributeはメソッド上で指定されたmodelオブジェクトに使用されます.
3、上記の2つの状況がない場合、newはバインディングされたbeanオブジェクトを一つ必要とし、その後、requestの名前に対応する方法で、値をbeanにバインドする.
使用方法上@ModelAttributeの例コード:
[java] view plin
copy
// Add one atribute // The return value 保存先 the method is added ト the モデル アンダー?デ the name 「account」 // You can customize the name via @ModelAttribute(「myAccent」) @ModelAttribute public Acceount addAcceount(@Request Param String number { return account Manager.findAcceount(number); ) この方法の実際の効果は、@Request Mappingのメソッドを呼び出す前に、requestオブジェクトのmodel里put(「account」、Acceount)です.
パラメータに使用する@ModelAttributeの例コード:
[java] view plin
copy
@Request Mapping(value="/owners/{weners}/pets/{petId}/edit} method = Request Method.POST) public String processSubmit(@ModelAttribute) ピート pet) { ) まず、@Session AttributesにバインディングされているPetオブジェクトがあるかどうかを調べ、ない場合は@ModelAttributeメソッドレベルでPetオブジェクトがバインディングされていますか?ない場合はURI templateの値を対応する名前でPetオブジェクトの各属性に結び付けます.
補足解説:
問題:注釈が与えられていない場合、パラメータはどのように結合されますか?
バインディングするオブジェクトの場合、簡単なタイプ: @Request Paramを呼び出して処理します.
バインディングするオブジェクトの場合、複雑なタイプ: @ModelAttributeを呼び出して処理します.
ここでの簡単なタイプとは、javaのオリジナルタイプ(bolean,intなど)、元のタイプのオブジェクト(Boolean,Intなど)、String,Dateなどを指します.Springは、直接Stringからターゲットオブジェクトに変換できるタイプです.
原文の住所:http://blog.csdn.net/walkerjong/article/details/7946109/
===============================設定ファイル===============================================================================
application/json;charset=UTF-8
text/html;charset=UTF-8
WriteNullStringAsEmpty
NotWriteDefaultValue