[SSM-SpringMVCの記事] 04- @ RequestMappingアノテーションの詳細な説明、非常に詳細、@ RequestParamおよび@PathVariableアノテーションで使用

@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アドレスを処理するために使用されるリクエストパラメータ値では、
  @PathVariableURLにマッチするために使用される、プロセッサ機能処理メソッドのメソッドパラメータに要求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 = strivedayurlValue = study

おすすめ

転載: blog.csdn.net/qq_40542534/article/details/109072582