ホームページ >Java >&#&チュートリアル >springmvc で一般的に使用される 5 つのアノテーションは何ですか?
推奨チュートリアル: "java ビデオ チュートリアル "
springmvc でよく使用される 5 つのアノテーションとは何ですか?
springmvc で一般的に使用される 5 つのアノテーションは次のとおりです:
1. コンポーネント アノテーション:
1. @Component クラスの前に @ を追加します定義 コンポーネントのアノテーションは Spring コンテナによって認識され、Bean に変換されます。
2. @Repository は Dao 実装クラスに注釈を付けます (特別な @Component)
3. @Service はビジネス ロジック層に注釈を付けるために使用されます (特別な @Component)
4. @Controller はコントロール層のアノテーションに使用します (特別な @Component)
上記 4 つのアノテーションはすべてクラスにアノテーションが付けられ、アノテーションが付けられたクラスは Spring によって Bean として初期化され、統一的に管理されます。
2. リクエストとパラメータのタイプのアノテーション:
1、@RequestMapping: リクエストのアドレス マッピングの処理に使用され、クラスとパラメータに適用できます。優れた方法。
#value: リクエストリクエストのマッピングアドレスを定義します。
●method: [GET、POST、HEAD、OPTIONS、PUT、PATCH、DELETE、 TRACE. 】デフォルトではgetリクエストが受け付けられますが、リクエストメソッドが定義されたメソッドと異なる場合、リクエストは成功しません。
##●params: リクエストリクエストに含める必要があるパラメータ値を定義します。 #headers: リクエスト リクエストには、次のような特定の指定されたリクエスト ヘッダーが含まれている必要があることを定義します。 RequestMapping(value = "/something", headers = "content-type=text/*") は、リクエストが一致するリクエストは、「text/html」、「text/plain」を含む Content-type ヘッダーです。##●消費: 送信が要求されるコンテンツのタイプを定義します。
#生成: 返されるコンテンツ タイプを指定します。リクエスト ヘッダーの (Accept) タイプに指定されたタイプが含まれている場合にのみ、そのタイプが返されます。
@RequestMapping(value="/requestTest.do",params = {"name=sdf"},headers = {"Accept-Encoding=gzip, deflate, br"},method = RequestMethod.GET) public String getIndex(){ System.out.println("请求成功"); return "index"; }
上記のコードは、リクエストがメソッドは GET リクエストです。リクエスト パラメータにはパラメータ name=sdf が含まれ、リクエスト ヘッダーのタイプ ヘッダーは Accept-Encoding=gzip、deflate、br である必要があります。
このように、アノテーションを通じてリクエストを制限できます。
: 受信パラメータの値を取得するために使用されます #値: パラメータの名前
# required: 定義 受信パラメータが必須かどうか、デフォルトは true (@RequestMapping の params 属性と同様)
@RequestMapping("/requestParams1.do") public String requestParams1(@RequestParam(required = false) String name){ System.out.println("name = "+name); return "index"; } @RequestMapping("/requestParams2.do") public String requestParams2(@RequestParam(value = "name",required = false) String names){ System.out.println("name = "+names); return "index"; }
パラメータを入力する 2 つの方法は同じです。同様に、明示的な宣言がない場合は、最初の方法で宣言したように、入力パラメータ名と関数パラメータ変数名は同じになります。
3.@PathViriable: パス パラメーター値の定義に使用されます。 ##●値: パラメーターの名前 ##●必須: パス パラメーター値を定義するために使用されます。受信パラメータは必須の値です
@RequestMapping("/{myname}/pathVariable2.do") public String pathVariable2(@PathVariable(value = "myname") String name){ System.out.println("myname = "+name); return "index"; }
このパスは {myname} をパス パラメータとして宣言します。このパスは任意の値を持ち、@PathVariable は値に基づいてパスの値を取得できます。
4.@ResponseBody: メソッドに作用し、戻り結果全体を特定の形式 (json 形式や xml 形式など) で返すことができます。
@RequestMapping("/{myname}/pathVariable2.do") @ResponseBody public String pathVariable2(@PathVariable(value = "myname") String name){ System.out.println("myname = "+name); return "index"; }
これはページを返しませんが、文字列「index」をページに直接出力します。これは実際には次のコードに似ています。 PrintWriter out = resp.getWriter();
out.print("index");
out.flush();
: 要求された Cookie 値 @RequestMapping("/requestParams.do")
public String requestParams(@CookieValue("JSESSIONID") String cookie){
return "index";
}
を取得するために使用されます。
6. @ModelAttribute:
は、パラメータをモデルに保存するために使用されます。メソッドまたはパラメータに注釈を付けることができます。メソッドに注釈が付けられると、メソッドはプロセッサで実行されますメソッドを実行する前に実行し、返されたオブジェクトをセッション(@SessionAttributes アノテーションが前提)またはモデル属性に格納します。メソッドをマークするときに @ModelAttribute("attributeName") を指定します。指定されていない場合は、戻り値のクラス名type が属性名として使用されます (最初の小文字)。 @ModelAttribute("user")
public UserEntity getUser(){
UserEntity userEntityr = new UserEntity();
userEntityr.setUsername("asdf");
return userEntityr;
}
@RequestMapping("/modelTest.do")
public String getUsers(@ModelAttribute("user") UserEntity user){
System.out.println(user.getUsername());
return "/index";
}
上記のコードでは、@ModelAttribute("user") アノテーションが使用されており、コントローラーを実行する前に実行されます。その後、user という名前のモデル データが生成されます。コントローラーでは、それにアノテーションを付けます。パラメーター。@ModelAttribute はパラメーターを取得し、モデルをコントローラーに適用します。これを JSP ページ、
<body> ${user.username} </body>7、@SessionAttributes## で使用することもできます。 #Default Next Spring MVC は、モデル内のデータをリクエスト フィールドに保存します。リクエストが終了すると、データは無効になります。ページをまたいで使用したい場合。次に、セッションを使用する必要があります。 @SessionAttributes アノテーションを使用すると、モデル内のデータのコピーをセッション ドメインに保存できます。 @ModelAttribute("user") とともに使用すると、対応する名前のモデル値がセッションに保存されます。
@Controller @RequestMapping("/test") @SessionAttributes(value = {"user","test1"}) public class LoginController{ @ModelAttribute("user") public UserEntity getUser(){ UserEntity userEntityr = new UserEntity(); userEntityr.setUsername("asdf"); return userEntityr; } @RequestMapping("/modelTest.do") public String getUsers(@ModelAttribute("user") UserEntity user ,HttpSession session){ System.out.println(user.getUsername()); System.out.println(session.getAttribute("user")); return "/index"; } }前の例のコードを結合し、@SessionAttributes アノテーションを追加して、それをリクエストしました。 2 回要求すると、 user という名前の属性の値が最初のセッションに存在しません。2 回目のリクエストでは、セッションに別の値があることがわかります。これは、モデル データがセッション中に保存されていないためです。最初のリクエストです。返された後にのみ保存されます。最後のモデルは 2 番目のリクエスト中に取得できます。
注: @ModelAttribute("user") UserEntity ユーザーが注釈コンテンツを取得すると、まずセッション内に対応する属性値があるかどうかをクエリし、存在しない場合はモデルをクエリします。
おすすめ関連記事: 「java 開発チュートリアル 」
以上がspringmvc で一般的に使用される 5 つのアノテーションは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。