Spring MVC で一般的に使用されるアノテーション メソッドの紹介
この記事ではSpring MVCの一般的なアノテーションを中心に、@RequestMapping、@RequestParam、@ModelAttributeなどの類似アノテーションについても詳しく紹介していますので、興味のある方はぜひ学んでみてください
Springではバージョンからプログラミングにアノテーションが導入されています。 2.5. ユーザーは @RequestMapping、@RequestParam、@ModelAttribute およびその他の同様のアノテーションを使用できます。これまでのところ、Spring バージョンには大きな変更が加えられていますが、アノテーションの機能は継続され、継続的に拡張されており、これはアノテーション機能の機能と切り離すことができません。今日はアノテーションについて見ていきます。 Spring MVC 4 で一般的に使用されます。
1. @Controller
Controller は、アプリケーションへのアクセスを提供するサービス インターフェイスを通じて定義された動作であり、ユーザー入力を解釈し、それをモデルに変換して、ユーザーにビューを表示します。 Spring MVC は @Controller を使用してコントローラーを定義します。これにより、クラスパス上に定義されたコンポーネントが自動的に検出され、自動的に登録されることも可能になります。自動検出を有効にしたい場合は、XML ヘッダー ファイルの下に spring-context を導入する必要があります:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="org.springframework.samples.petclinic.web"/> <!-- ... --></beans>
2. @RequestMapping
@RequestMapping アノテーションを使用して、「」のような URL をマップできます。 /favsoft" をクラス全体または特定の処理メソッドに付与します。一般に、クラスレベルのアノテーションは特定のリクエスト パスをフォーム コントローラーにマップしますが、メソッド レベルのアノテーションは特定の HTTP メソッド リクエスト (「GET」、「POST」など) または HTTP リクエスト パラメータに単純にマップします。
@Controller @RequestMapping("/favsoft") public class AnnotationController { @RequestMapping(method=RequestMethod.GET) public String get(){ return ""; } @RequestMapping(value="/getName", method = RequestMethod.GET) public String getName(String userName) { return userName; } @RequestMapping(value="/{day}", method=RequestMethod.GET) public String getDay(Date day){ DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); return df.format(day); } @RequestMapping(value="/addUser", method=RequestMethod.GET) public String addFavUser(@Validated FavUser favUser,BindingResult result){ if(result.hasErrors()){ return "favUser"; } //favUserService.addFavUser(favUser); return "redirect:/favlist"; } @RequestMapping("/test") @ResponseBody public String test(){ return "aa"; } }
@RequestMapping はクラス レベルとメソッド レベルの両方で適用できます。これがクラス レベルで定義されている場合、このコントローラーによって処理されるすべてのリクエストが /favsoft パスにマップされることを示します。 @RequestMapping のメソッド属性を使用して、受け入れるメソッド タイプをマークできます。メソッド タイプが指定されていない場合は、HTTP GET/POST メソッドを使用してデータをリクエストできます。その型を使用してデータを取得します。
@RequestMapping @Validated と BindingResult を使用して入力パラメーターを共同検証できます。検証が成功または失敗すると、それぞれ異なるビューが返されます。
@RequestMapping は、URL にアクセスするための URI テンプレートの使用をサポートしています。 URI テンプレートは、1 つ以上の変数名で構成される URL のような文字列で、これらの変数に値がある場合、それは URI になります。
3. @PathVariable
Spring MVC では、@PathVariable を使用してメソッドパラメータに注釈を付け、URI テンプレート変数の値にバインドできます。次のコードに示すように:
String findOwner( String , Model model) { FavUser favUser = favUserService.findFavUser(); model.addAttribute( ; }
URI テンプレート「favusers/{favUserId}」は、変数 favUserId の名前を指定します。コントローラーがこのリクエストを処理するとき、favUserId の値は URI に設定されます。例えば、「favusers/favccxx」のようなリクエストがあった場合、favUserIdの値はfavccxxとなります。
@PathVariable には、次のような複数の注釈を付けることができます:
@RequestMapping(value="/owners/{ownerId}/pets/{petId}", method=RequestMethod.GET)public String findPet(@PathVariable String ownerId, @PathVariable String petId, Model model) { Owner owner = ownerService.findOwner(ownerId); Pet pet = owner.getPet(petId); model.addAttribute("pet", pet); return "displayPet"; }
@PathVariable のパラメータには、int、long、Date などの任意の単純な型を指定できます。 Spring は自動的に適切な型に変換するか、TypeMismatchException をスローします。もちろん、追加のデータ型をサポートするために登録することもできます。
@PathVariable が Map
@PathVariable は、非常に強力なプロパティを決定する正規表現の使用をサポートしており、パス テンプレートでプレースホルダーを使用したり、特定のプレフィックス マッチング、サフィックス マッチング、その他のカスタム形式を設定したりできます。
@PathVariable は行列変数もサポートしています。実際のシナリオではあまり使用されないため、詳細は説明しません。子供用の靴が必要な場合は、公式 Web サイトのドキュメントを確認してください。
4. @RequestParam
次のコードに示すように、@RequestParam はリクエストされたパラメーターをメソッド内のパラメーターにバインドします。実際、このパラメータが設定されていない場合でも、アノテーションはデフォルトでこのパラメータを使用します。指定したパラメーターをカスタマイズする場合は、@RequestParam の required 属性を false に設定します (@RequestParam(value="id",required=false) など)。
5. @RequestBody
@RequestBody は、メソッドのパラメーターを HTTP リクエストの本文にバインドする必要があることを意味します。
@RequestMapping(value = "/something", method = RequestMethod.PUT)public void handle(@RequestBody String body, Writer writer) throws IOException { writer.write(body); }
@RequestBody が @RequestParam ほど良くないと思われる場合は、HttpMessageConverter を使用してリクエストの本文をメソッド パラメーターに転送できますが、これは一般的には行われません。終わり。 。 REST アーキテクチャを構築する場合、@RequestBody には @RequestParam よりも大きな利点があることがわかりました。
6. @ResponseBody
@ResponseBody の機能は、戻り値の型を HTTP 応答本文に直接入力することです。 @ResponseBody は、JSON 形式でデータを出力する場合によく使用されます。コードは次のとおりです: @RestController
我们经常见到一些控制器实现了REST的API,只为服务于JSON,XML或其它自定义的类型内容,@RestController用来创建REST类型的控制器,与@Controller类型。@RestController就是这样一种类型,它避免了你重复的写@RequestMapping与@ResponseBody。
@RestController public class FavRestfulController { @RequestMapping(value="/getUserName",method=RequestMethod.POST) public String getUserName(@RequestParam(value="name") String name){ return name; } }
8. HttpEntity
HttpEntity除了能获得request请求和response响应之外,它还能访问请求和响应头,如下所示:
@RequestMapping("/something")public ResponseEntity<String> handle(HttpEntity<byte[]> requestEntity) throws UnsupportedEncodingException { String requestHeader = requestEntity.getHeaders().getFirst("MyRequestHeader")); byte[] requestBody = requestEntity.getBody(); // do something with request header and body HttpHeaders responseHeaders = new HttpHeaders(); responseHeaders.set("MyResponseHeader", "MyValue"); return new ResponseEntity<String>("Hello World", responseHeaders, HttpStatus.CREATED); }
9. @ModelAttribute
@ModelAttribute可以作用在方法或方法参数上,当它作用在方法上时,标明该方法的目的是添加一个或多个模型属性(model attributes)。该方法支持与@RequestMapping一样的参数类型,但并不能直接映射成请求。控制器中的@ModelAttribute方法会在@RequestMapping方法调用之前而调用,示例如下:
@ModelAttribute public Account addAccount(@RequestParam String number) { return accountManager.findAccount(number); } @ModelAttribute public void populateModel(@RequestParam String number, Model model) { model.addAttribute(accountManager.findAccount(number)); // add more ... }
@ModelAttribute方法用来在model中填充属性,如填充下拉列表、宠物类型或检索一个命令对象比如账户(用来在HTML表单上呈现数据)。
@ModelAttribute方法有两种风格:一种是添加隐形属性并返回它。另一种是该方法接受一个模型并添加任意数量的模型属性。用户可以根据自己的需要选择对应的风格。
@ModelAttribute作用在方法参数上
当@ModelAttribute作用在方法参数上时,表明该参数可以在方法模型中检索到。如果该参数不在当前模型中,该参数先被实例化然后添加到模型中。一旦模型中有了该参数,该参数的字段应该填充所有请求参数匹配的名称中。这是Spring MVC中重要的数据绑定机制,它省去了单独解析每个表单字段的时间。
@ModelAttribute是一种很常见的从数据库中检索属性的方法,它通过@SessionAttributes使用request请求存储。在一些情况下,可以很方便的通过URI模板变量和类型转换器检索属性。
以上がSpring MVC で一般的に使用されるアノテーション メソッドの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











2023年、AI技術が注目を集め、プログラミング分野を中心にさまざまな業界に大きな影響を与えています。 AI テクノロジーの重要性に対する人々の認識はますます高まっており、Spring コミュニティも例外ではありません。 GenAI (汎用人工知能) テクノロジーの継続的な進歩に伴い、AI 機能を備えたアプリケーションの作成を簡素化することが重要かつ緊急になっています。このような背景から、AI 機能アプリケーションの開発プロセスを簡素化し、シンプルかつ直観的にし、不必要な複雑さを回避することを目的とした「SpringAI」が登場しました。 「SpringAI」により、開発者はAI機能を搭載したアプリケーションをより簡単に構築でき、使いやすく、操作しやすくなります。

PyCharm 複数行コメント ショートカット キー: コード コメントをより便利にし、特定のコード サンプルを必要とする日常のプログラミング作業において、コード コメントは非常に重要な部分です。コードの読みやすさと保守性が向上するだけでなく、他の開発者がコードの意図や設計アイデアを理解するのにも役立ちます。ただし、コード コメントを手動で追加するのは、多くの場合、時間がかかり、退屈な作業です。コードのコメントをより効率的にするために、PyCharm には複数行のコメント用のショートカット キーが用意されています。 PyCharm では、Ctrl+/ を使用できます。

Spring+AI は業界リーダーとして、強力で柔軟な API と高度な機能を通じてさまざまな業界に最先端のソリューションを提供します。このトピックでは、さまざまな分野での Spring+AI の応用例を詳しく掘り下げ、Spring+AI がどのように特定のニーズを満たし、目標を達成し、これらの教訓をより広範囲のアプリケーションに拡張するかを示します。このトピックが Spring+AI の無限の可能性をより深く理解し、活用するきっかけになれば幸いです。 Spring フレームワークはソフトウェア開発の分野で 20 年以上の歴史があり、Spring Boot 1.0 バージョンがリリースされてから 10 年が経過しました。今、その春に異論を唱える人はいない

Spring プログラムによるトランザクションを実装する方法: 1. TransactionTemplate を使用する; 2. TransactionCallback および TransactionCallbackWithoutResult を使用する; 3. Transactional アノテーションを使用する; 4. TransactionTemplate を @Transactional と組み合わせて使用する; 5. トランザクション マネージャーをカスタマイズする。

地理情報科学を専攻する学生に適した推奨コンピュータ 1. 推奨 2. 地理情報科学を専攻する学生は、大量の地理データを処理し、複雑な地理情報分析を行う必要があるため、強力なパフォーマンスを備えたコンピュータが必要です。高度な構成を備えたコンピューターは、より高速な処理速度とより大きなストレージ容量を提供し、専門家のニーズをより適切に満たすことができます。 3. データ処理や分析の効率を向上させる、高性能プロセッサと大容量メモリを搭載したコンピュータを選択することをお勧めします。さらに、より大きなストレージ容量と高解像度ディスプレイを備えたコンピューターを選択すると、地理データと結果をより適切に表示できます。さらに、地理情報科学を専攻する学生は、地理情報システム (GIS) ソフトウェアの開発とプログラミングが必要になる可能性があることを考慮して、より優れたグラフィックス処理サポートを備えたコンピューターを選択してください。

Spring でトランザクション分離レベルを設定する方法: 1. @Transactional アノテーションを使用します; 2. Spring 構成ファイルに設定します; 3. PlatformTransactionManager を使用します; 4. Java 構成クラスに設定します。詳細な導入方法: 1. @Transactional アノテーションを使用し、トランザクション管理が必要なクラスまたはメソッドに @Transactional アノテーションを追加し、属性に分離レベルを設定します。 2. Spring の設定ファイルなどで

iCloud キーチェーンを使用すると、Web サイトやユーザー名を記憶したり推測したりすることなく、パスワードの管理が簡単になります。これを行うには、iCloud キーチェーン内のアプリや Web サイトの既存のパスワードにメモを追加します。この記事では、iPhoneのiCloudキーチェーンに保存したパスワードにメモを追加する方法を説明します。要件 iCloud キーチェーンのこの新機能を使用するには、満たす必要のある要件がいくつかあります。 iOS 15.4 以降を実行している iPhone iCloud キーチェーンに保存されているパスワード 有効な Apple ID 有効なインターネット接続 保存されたパスワードにメモを追加する方法 一部のパスワードを iCloud キーチェーンに保存する必要があることは言うまでもありません。

Spring は、Java 開発を簡素化し、強化するための多くのアノテーションを提供するオープンソース フレームワークです。この記事では、一般的に使用される Spring アノテーションについて詳しく説明し、具体的なコード例を示します。 @Autowired: Autowired @Autowired アノテーションを使用して、Spring コンテナーに Bean を自動的に接続できます。依存関係が必要な場合に @Autowired アノテーションを使用すると、Spring はコンテナー内で一致する Bean を見つけて自動的に注入します。サンプルコードは次のとおりです。
