目次
@RequestMapping
@RequestParam
@PathVariable
@ResponseBody
@ExceptionHandler
ホームページ Java &#&ベース springmvc でよく使用される 5 つのアノテーションの使用

springmvc でよく使用される 5 つのアノテーションの使用

Jul 01, 2020 pm 05:25 PM
springmvc

springmvc の 5 つの一般的なアノテーション: 1. @RequestMapping、リクエスト アドレス マッピングの処理に使用されるアノテーション、2. @RequestParam、リクエスト パラメーター領域のデータを関数処理のパラメーターにマッピングするために使用されます。メソッド; 3. @PathVariable、リクエスト変数の設定に使用されます。

springmvc でよく使用される 5 つのアノテーションの使用

@RequestMapping

は、リクエスト アドレス マッピングを処理するために使用されるアノテーションです。
クラスとメソッドに適用されます。クラスで使用すると、リクエストに応答するクラス内のすべてのメソッドがこのアドレスを親パスとして使用することを意味します。

Attribute

value: リクエストの実際のアドレスを指定します。値は通常の特定の値にすることも、特定の変数 (パス変数を含む URI テンプレート パターン)
は正規表現を含む値の型として指定できます (正規表現を含む URI テンプレート パターン)
method: 要求されたメソッドの種類 GET を指定します、POST、PUT、DELETE など。
consumes: application/json、text/html
など、リクエストを処理するための送信コンテンツ タイプ (Content-Type) を指定します。 generated: 返されるコンテンツ タイプを指定します。リクエスト ヘッダーの (Accept) タイプに指定されたタイプが含まれる場合にのみ、返されます。
params: 指定されたリクエストには特定のパラメータ値が含まれている必要がありますメソッドが処理できる前に
headers: このメソッドがリクエストを処理するには、指定されたリクエストに特定の指定されたヘッダー値が含まれている必要があります

  1.处理get请求: @RequestMapping(value = "index",method = RequestMethod.GET)
  2.springboot错误处理(使用app客户端返回json格式,使用浏览器返回html错误页)
   @RequestMapping(produces = "text/html")
  3.方法仅处理request Content-Type为“application/json”类型的请求
   @RequestMapping(value = "/pets", consumes="application/json")
  4.仅处理请求中包含了名为“myParam”,值为“myValue”的请求
   @RequestMapping(value = "/pets/{petId}", params="myParam=myValue") 
  5.仅处理request的header中包含了指定“Refer”请求头和对应值为“http://www.rxy.com/”的请求
   @RequestMapping(value = "/pets", headers="Referer=http://www.rxy.com/")
ログイン後にコピー

@RequestParam

は、リクエスト パラメーター領域のデータを関数処理メソッドにマッピングするために使用されます。
パラメーターに適用されるもの: メソッド パラメーター

属性

値/名前:両方の属性はパラメータ名、つまり入力パラメータのリクエストパラメータ名を参照します(通常はフォーム名属性)
required: 必須かどうかに関係なく、デフォルトは true です。リクエストには対応するパラメータが必要です。そうでない場合は、例外がスローされます。
defaultValue: デフォルト値。リクエスト内に同じ名前のパラメータがない場合のデフォルト値を示します。このパラメータを設定する場合、必須なのは次のとおりです。自動的に false

  如果是原子类型,不管加没加注解,都必须有值,否则抛出异常,如果允许空值请使用包装类代替
  index(@RequestParam Integer num){}  表示该参数必须传递,值允许为空
  表示该参数非必须,如果不传则默认为0
  getPageData(@RequestParam(name="pageNum",defaultValue="0") String pageNo, String pageSize)
ログイン後にコピー

@PathVariable

に設定されます。リクエスト URL 内のテンプレート変数をマップするために使用されます。関数処理メソッドのパラメータに移動します。つまり、uri テンプレート内の変数を取り出します。パラメータとして
適用可能: メソッド パラメータ

属性

値: 名前がメソッド パラメータと同じである場合は、URL テンプレート変数名を指定します。名前が異なる場合は、次のようにする必要があります。

    @RequestMapping("/index/{id}")
         public String index(@PathVariable("id") String sdf){
           System.out.println(sdf);
           return "index";
     }
ログイン後にコピー

@ResponseBody

このアノテーションは、Controller メソッドによって返されたオブジェクトに適切な を渡すために使用されます。 HttpMessageConverter が指定された形式に変換された後、Response オブジェクトの body データ領域に書き込まれます。デフォルトでは、springmvc json の形式で返されます (jackson コンバータを使用します)
該当: 返されたデータが HTML タグを含むページではなく、他の形式のデータ (たとえば、 @
RequestBody HTTP リクエスト本文を適切な HttpMessageConverter オブジェクトに変換します @
ResponseBody コンテンツまたはオブジェクトを返しますHTTP レスポンスボディとして、HttpMessageConverter に適したアダプタ変換オブジェクトを呼び出し、出力ストリーム

@RequestBody

1 を書き込みます。このアノテーションは、リクエスト リクエストのボディ部分を読み取り、解析するために使用されます。システムのデフォルト構成の HttpMessageConverter を使用して、対応するデータを返されるオブジェクトにバインドします。オブジェクト

2 で、HttpMessageConverter によって返されたオブジェクト データを、コントローラのメソッドのパラメータにバインドします。
Applicable : リクエストの Content-Type のメソッド パラメータ: application/json、application/xml はこれを使用する必要があります。 注
application/x-www-form-urlencoded の場合、リクエスト メソッドが指定されている場合は必須です。
POST/GET メソッドではオプションです (つまり、@RequestParam、@ModelAttribute も処理できるため必須ではありません)
マルチパート/フォームデータの場合、@RequestBody はこの形式のデータを処理できません
属性: required: 必須かどうか。デフォルトは true で、リクエストには対応するパラメータが必要であることを示します。そうでない場合は例外がスローされます
Example: 通常、このアノテーションを使用するフロントエンドは ajax リクエストを送信し、その後、 request 部分は次のとおりです:

         $.ajax({
           type: "POST",
           url:"/role/saveRole",
           contentType:"application/json",
           data: JSON.stringify(_self.form)...
ログイン後にコピー
注: contentType は省略できません。データは stringify を通じて json 文字列に変換する必要があります。

その後、対応するメソッドは次のように記述できます:

@RequestMapping(value = "/saveRole",method = RequestMethod.POST)
public String saveRole(@RequestBody People requestJson) {}
ログイン後にコピー
フロントエンドがオブジェクトの配列を渡す場合、バックエンドは List を使用してそれを直接受け入れることもできます。これはリスト データをバインドする最も実用的な方法です

@CookieValue

リクエスト ヘッダーの Cookie 値をメソッドのパラメーターにバインドできます。

該当: メソッド パラメーター

获取cookie中的JSESSIONID
public String index(@CookieValue("JSESSIONID") String cookie){}
ログイン後にコピー
@RequestHeader

リクエストをバインドできます。 リクエスト ヘッダー部分の値メソッドのパラメータにバインドされます

適用対象: メソッド パラメータ

获取请求中Accept-Encoding值,返回gzip, deflate, br
public String index(@RequestHeader("Accept-Encoding") String host){return host;}
ログイン後にコピー

@ExceptionHandler

注解在方法上,表示该方法用于处理特定的异常,处理范围是当前类,如果想要全局捕获异常,需要使用@ControllerAdvice
当一个Controller中有多个HandleException注解出现时,那么异常被哪个方法捕捉呢?这就存在一个优先级的问题
ExceptionHandler的优先级是:在异常的体系结构中,哪个异常与目标方法抛出的异常血缘关系越紧密,就会被哪个捕捉到
属性:value: 需要处理的异常类型集合(Class)
在当前Controller有两个处理异常的方法,当访问/index时,页面显示: json data

package com.rxy.controller;

@Controller
public class HelloController {
    
    @ExceptionHandler({ ArithmeticException.class })
    @ResponseBody
    public String handleArithmeticException(Exception e) {
        e.printStackTrace();
        return "json data";
    }
    
    @ExceptionHandler({ IOException.class })
    public String handleIOException(Exception e) {
        e.printStackTrace();
        //返回错误页面
        return "error";
    }

    @RequestMapping("/index")
    public String index(){
        int i = 10 / 0;
        return "index";
    }

}
ログイン後にコピー

以上がspringmvc でよく使用される 5 つのアノテーションの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

SpringBootとSpringMVCの比較と差異分析 SpringBootとSpringMVCの比較と差異分析 Dec 29, 2023 am 11:02 AM

SpringBoot と SpringMVC はどちらも Java 開発で一般的に使用されるフレームワークですが、それらの間には明らかな違いがいくつかあります。この記事では、これら 2 つのフレームワークの機能と使用法を調べ、その違いを比較します。まず、SpringBoot について学びましょう。 SpringBoot は、Spring フレームワークに基づいたアプリケーションの作成と展開を簡素化するために、Pivo​​tal チームによって開発されました。スタンドアロンの実行可能ファイルを構築するための高速かつ軽量な方法を提供します。

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC の違いは何ですか? Dec 29, 2023 am 10:46 AM

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC は、Web アプリケーションを構築するための 2 つの非常に人気のある Java 開発フレームワークです。これらは別々に使用されることが多いですが、両者の違いは明らかです。まず、SpringBoot は Spring フレームワークの拡張版または強化版とみなすことができます。 Spring アプリケーションの初期化と構成プロセスを簡素化し、開発者を支援するように設計されています。

spring と springmvc の違いは何ですか spring と springmvc の違いは何ですか Dec 29, 2023 pm 05:02 PM

spring と springmvc の違い: 1. 位置付けと機能、2. コア機能、3. アプリケーション領域、4. 拡張性。詳細な紹介: 1. 位置付けと機能 Spring は、依存関係の注入、アスペクト指向プログラミング、トランザクション管理などの機能を提供する包括的なアプリケーション開発フレームワークであり、エンタープライズ レベルのアプリケーションの開発を簡素化するように設計されており、Spring MVC はそのSpring フレームワーク。そのモジュールは Web アプリケーションの開発に使用され、MVC パターンを実装します。2. コア機能など。

SpringBoot と SpringMVC の違いは何ですか? SpringBoot と SpringMVC の違いは何ですか? Dec 29, 2023 pm 05:19 PM

SpringBootとSpringMVCはJava開発でよく使われるフレームワークで、どちらもSpringフレームワークで提供されていますが、機能や使用方法にいくつかの違いがあります。この記事では、SpringBootとSpringMVCそれぞれの特徴と違いを紹介します。 1. SpringBoot の特徴: 構成の簡素化: SpringBoot は、構成より規約の原則により、プロジェクトの構成プロセスを大幅に簡素化します。プロジェクトや開発者に必要なパラメータを自動的に設定できます。

springboot と springmvc の違いは何ですか springboot と springmvc の違いは何ですか Jun 07, 2023 am 10:10 AM

springboot と springmvc の違いは、1. 意味の違い、2. 構成の違い、3. 依存関係の違い、4. 開発時間の違い、5. 生産性の違い、6. JAR パッケージ化機能の実装方法の違い、7. バッチ処理の有無です。提供される機能、8. さまざまな機能、9. さまざまなコミュニティおよびドキュメントのサポート、10. デプロイメント記述子が必要かどうか。

Java API開発におけるWebサービス処理にSpringMVCを利用する Java API開発におけるWebサービス処理にSpringMVCを利用する Jun 17, 2023 pm 11:38 PM

インターネットの発展に伴い、Web サービスはますます一般的になってきています。アプリケーション プログラミング インターフェイスとして、JavaAPI はさまざまなアプリケーション シナリオに適応するために新しいバージョンを常にリリースしています。 SpringMVC は、人気のあるオープンソース フレームワークとして、Web アプリケーションを簡単に構築するのに役立ちます。この記事では、SpringMVC の設定、コントローラーの作成、使用方法など、JavaAPI 開発における Web サービス処理に SpringMVC を使用する方法を詳しく説明します。

SpringBoot と SpringMVC の類似点と相違点を比較する SpringBoot と SpringMVC の類似点と相違点を比較する Dec 29, 2023 am 08:30 AM

SpringBoot と SpringMVC の類似点と相違点の分析 SpringBoot と SpringMVC は、Java 分野では非常に重要な開発フレームワークです。どちらも Spring フレームワークの一部ですが、使用方法と機能には明らかな違いがいくつかあります。この記事では、SpringBoot と SpringMVC を比較し、それらの類似点と相違点を分析します。まず、SpringBoot について学びましょう。スプリングボー

JavaのSpringMVCインターセプターの使い方 JavaのSpringMVCインターセプターの使い方 May 13, 2023 pm 02:55 PM

インターセプタの役割 SpringMVC のインターセプタは、サーブレット開発におけるフィルタに似ており、プロセッサの前処理と後処理に使用されます。インターセプタが一定の順序でチェーン状に接続されており、このチェーンをインターセプタチェーン(InterceptorChain)と呼びます。インターセプトされたメソッドまたはフィールドにアクセスすると、インターセプター チェーン内のインターセプターが、以前に定義された順序で呼び出されます。インターセプターは、AOP のアイデアを具体的に実装したものでもあります。インターセプターとフィルターの違い: フィルター (フィルター) インターセプター (インターセプター) の使用範囲はサーブレット仕様の一部であり、任意の JavaWeb プロジェクトで使用できます。

See all articles