記事ディレクトリ
@RequestMappingアノテーション
@RequestMapping
マッピングルールのプロセッサコントローラ関数アノテーションメソッドへのアドレスの処理要求であり、アノテーションはHTTPリクエストをMVCコントローラおよびRESTコントローラの処理メソッドにマッピングします。クラスまたはメソッドで使用できます。クラスの注釈は、要求に応答するクラス内のすべてのメソッドがこのアドレスを親パス(モジュールパス)として使用することを意味します。
6つの基本的な属性
属性名 | 説明 |
---|---|
値(パス) | リクエストの実際のアクセスアドレスを指定し@RequestMapping("url") ます。デフォルト値のurlはvalueの値です。指定するアドレスは、URIテンプレートパターンにすることができます。 |
方法 | 主にGET、POST、DELETE、PUTなどを含むリクエストのメソッドタイプを指定します。 |
パラメータ | 特定のパラメータ値をリクエストに含める必要があることを指定し、メソッドがリクエストを処理できるようにそれを含めます。 |
ヘッダー | 指定されたリクエストには、特定の指定されたヘッダー値が含まれている必要があります。これを含めると、メソッドがリクエストを処理できるようになります。 |
消費する | application / json、text / htmlなど、リクエストの処理後に返されるデータのタイプを指定します。 |
を生成します | 返されるコンテンツのタイプを指定し、指定されたタイプが要求ヘッダーの(Accept)タイプに含まれている場合にのみ返されます。 |
@RequestMappingアノテーションの使用
1.@RequestMapping
クラスに追加します(モジュールのアドレスに名前を付けます)
このクラスのすべてのメソッドにアクセスするには、アドレスプレフィックス/test
+アクセスする特定のメソッドのパス/値が必要です
@Controller
@RequestMapping("test")
public class RequestMappingController {
}
2.@RequestMapping
メソッドに書き込みます
2.1文字列値を直接書き込むvalue
// path
、現在のプロジェクトアドレス/モジュール/testMapping
アクセスを呼び出す、
@RequestMapping("testMapping")
public String testMapping(){
return "requestmappingsuccess";//视图解析器前后缀拼接返回页面地址
}
//或者下面方法都行
@RequestMapping(value = "testMapping")
@RequestMapping(path = "testMapping")
2.2複数のリンクマッピングを構成する
//通过 /test1 /test2 /test3 和/testurl/下的所有子模块 都能访问
@RequestMapping({
"/test1","/test2","/test3","testurl/*"})
@RequestMapping(value = {
"/test1","/test2","/test3",,"testurl/*"})
@RequestMapping(path = {
"/test1","/test2","/test3",,"testurl/*"})
2.2method
属性の使用
method
設定されていない場合は、どの属性にもアクセスできます。設定されている場合は、設定された送信方法の要求方法のみにアクセスできます。
4の値:
RequestMethod.GET
RequestMethod.POST
RequestMethod.PUT
RequestMethod.DELETE
メソッド値が設定されている場合、値を設定する要求メソッドのみがサポートされ、他の要求メソッドはサポートされません。就会报405错误 – Method Not Allowed
//设置只支持post请求
@RequestMapping(path="testMethod",method = {
RequestMethod.POST})
//设置只接收get请求
@RequestMapping(path="testMethod",method = {
RequestMethod.GET})
2.3param
プロパティ
特定のパラメータ値をリクエストに含める必要があることを指定し、メソッドがリクエストを処理できるようにそれを含めます。
//请求中必须要有参数username(页面中的name值),且参数值要为striveday才执行该方法
@RequestMapping(value="/testParam", params="username = strivedaay")
//请求中必须要有参数username(页面中的name值),且参数值不为striveday才执行该方法
@RequestMapping(value="/testParam", params="username != strivedaay")
2.4headers
プロパティ
指定された要求のスコープには、特定の指定されたヘッダー値が含まれている必要があります。これは、メソッドが要求を処理できるようにするために含めることができます。
@RequestMapping(value="testHeaders",headers={
"context-type=text/plain","context-type=text/html"})
public String testHeaders(){
}
上記のアクセスの場合、context-type=text/plain,context-type=text/html
これら2つの属性が要求ヘッダーに含まれていないと、メソッドにアクセスできず、404エラーが報告されます。
2.5consumes
属性
consumes
たとえばapplication/json
、リクエストの処理後に返されるデータのタイプを指定しますtext/html
。
//设置处理请求之后返回值为json数据类型
@RequestMapping(value = "testConsumes",consumes="application/json")
public String testConsumes(@RequestBody User user, Model model) {
}
2.6produces
プロパティ
produces
返されるコンテンツのタイプを指定するために使用され、指定されたタイプが要求ヘッダーの(Accept)タイプに含まれている場合にのみ使用されます
//设置请求之后返回数据是json数据类型,且request的请求头中的要有(包含)该类型,才能返回
@RequestMapping(value = "testProduces ",consumes="application/json")
public String testProduces(@RequestBody User user, Model model) {
}
2.7@RequestParam
リクエストパラメータの設定に協力する【***】
@RequestParamを使用すると、HTTP要求パラメーターをコントローラー内のメソッドのパラメーターにバインドできます。ページの着信パラメーター(名前の値)のパラメーターと、パラメーターリストを受信するメソッドの正式なパラメーター名に一貫性がなく、パラメーターのバインド(割り当て)が行われていることがわかります。
@RequestParam
注釈には3つの属性があります
- value:注釈の値は、ページで渡されるパラメーター名と一致している必要があります。
- required:デフォルト値はtrueです。これは、パラメーターに値を指定する必要があることを意味します。この値を指定しない場合、400ページが表示されます。
- defaultValue = "striveday":パラメーターが指定されている場合は取得します。パラメーターが指定されていない場合、デフォルトはstrivedayです。
- 【ヒント1】
@RequestParam
デフォルトではパラメータを指定する必要があり、設定により指定したパラメータを選択できるrequired = false
ため、リクエストに@RequestParam
指定したvalue
パラメータがなくてもメソッドにアクセスできます。- 【ヒント2】
defaultValue
要求されたvalue
パラメータに値がなくても、defaultValueでデフォルト値が設定されるように設定できる値であり、このメソッドにもアクセスできます。- 【ヒント1】ページからバックグラウンドに送信されるデータはすべて文字列型であり、取得した
request.getParameter()
データ型も文字列型ですが、Springは文字列と8つの基本データ型を自動的に変換します。- [ヒント2]エラー400(HTTPステータス400):間違った要求を参照している、URLによって提供されたパラメーターとメソッドによって指定されたパラメーターに一貫性がない、番号のタイプと番号に一貫性がない、パラメーター名の名前に一貫性がないなど。
たとえば、パラメータusername = striveday
がページに渡さ@RequestParam()
れた場合、注釈で指定できます。また、ページから渡された要求パラメータ名と矛盾する場合は、メソッドパラメータ名を割り当てることができます。
//通过@RequestParam让页面传入的参数username赋值给方法参数列表的name
@RequestMapping("testRequestParam")
public String getUsername(@RequestParam("username") String name){
System.out.println("username = " + name);
}
2.8協力して@PathVariable
、動的URLの処理を実現する【***】
@RequestParam
そして@PathVariable
差:それは
@RequestMapping
プロセッサコントローラ機能メソッドマッピングルールにリクエストURLアドレスを処理するために使用されるリクエストパラメータ値では、
@PathVariable
URLにマッチするために使用される、プロセッサ機能処理メソッドのメソッドパラメータに要求URIテンプレートの可変部分の結合でありますパスのルールとパターン。
//testPathVariable/{urlValue} 其中urlValue是占位符
//以前的url是 /testPathVariable?urlvalue=值 现在变成了/testPathVariable/值
@RequestMapping(value = "/testPathVariable/{urlValue}", method = RequestMethod.GET)
public String getUrlValue (@PathVariable("urlValue") String username){
System.out.println("urlValue = " + username);
return username;
}
上記のメソッドアクセス
localhost:8080/testPathVariable/参数值
は、パラメーター値が何であっても、メソッドにアクセスされますが、メソッドのハムスターユーザー名に異なるパラメーター値が割り当てられます。たとえば、あなたの訪問の両方localhost:8080/testPathVariable/striveday
との訪問は、localhost:8080/testPathVariable/study
メソッドを訪問しますgetUrlValue
が、その割り当てはusername
異なる、出力結果が分かれているurlValue = striveday
とurlValue = study