Spring MVC@RequestMapping注記

5526 ワード

概要
@RequestMapping注記は、要求アドレスマッピングを処理するための注記であり、サーブレットにおけるwebに相当する.xmlで構成されたマッピングは一貫して機能し、コントローラのクラス定義およびメソッド定義に寸法を付けることができます.
クラスでは、クラス内のすべての応答要求を表す方法が親パスとして使用されます.
DispatcherServiceletは、要求をキャプチャした後、コントローラ上の@RequestMappingが提供するマッピング情報により、要求に対応する処理方法を決定する.
@RequestMapping AntスタイルURL対応
?:ファイル名に一致する文字
*:ファイル名に一致する任意の文字
**:複数パスの一致
例:
package com.helloworld;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/helloworld_mvc")
public class HelloWorld {

    @RequestMapping("/*/testAnt")
    public String testAnt(){
        return "success";
    }
}

注意:index.jspのaラベルのmvcaaは任意に書かれており、マッピング方法の*番号です.



  
    $Title$
  
  
    antテスト
  


 
RequestMapping注記の6つのプロパティ
注:複数のプロパティを同時に定義すると、それらの間には関連があり、複数の条件を組み合わせてリクエストマッピングをより正確にすることができます.
1、 value, method
例:
  • value:要求された実際のアドレスを指定し、指定されたアドレスはURI Templateモードであってもよい(後述).valueのuri値は、通常の具体的な値、ある変数を含む値(URI Template Patterns with Path Variables)、正規表現を含む値(URI Template Patterns with Regular Expressions)の3種類に指定できます.
  • method:要求のmethodタイプ、GET、POST、PUT、DELETEなどを指定します.
  • 
    
    
      
        $Title$
      
      
    
        
    package com.helloworld;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("/helloworld_mvc")
    public class HelloWorld {
    
        @RequestMapping(value = "/testMethod", method = RequestMethod.POST)
        public String testMethod(){
            return "success";
        }
    
    }
    
     

  • 2、 consumes,produces
  • consumes:アプリケーション/json、text/htmlなどの処理要求のコミット・コンテンツ・タイプを指定します.
  • produces:requestリクエストヘッダの(Accept)タイプに指定されたタイプが含まれている場合にのみ返されるコンテンツタイプを指定します.

  • 3、 params,headers
  • params:requestにメソッドを処理するためにいくつかのパラメータ値が含まれている必要があることを指定します.
  • headers:リクエストを処理するには、requestに指定したヘッダ値が含まれる必要があることを指定します.
  • 
    
    
      
        $Title$
      
      
    
        Paramsテスト
        
      
    
    

     
    package com.helloworld;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    
    @Controller
    @RequestMapping("/helloworld_mvc")
    public class HelloWorld {
    
        @RequestMapping(value = "testParmter", params = {"username","age!=10"})
        public String testParams(){
            return "success";
        }
    
    }
    

    例:
    index.jsp
    
    
    
      
        $Title$
      
      
      メソッド  @RequestMapping
      
    クラス @RequestMapping

    success.jsp
    
    
    
    
        Title
    
    
    

    success


    dispatcher-servlet.xml
    
    
    
        
    
        
    
        
    
        
            
            
        
    

    クラス定義
    WEBアプリケーションのルートディレクトリに対して、初歩的な要求マッピング情報を提供する.
    package com.helloworld;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    @RequestMapping("/helloworld_mvc")
    public class HelloWorld {
    
        @RequestMapping("/hello")
        public String hello(){
            System.out.println("  ");
            return "success";
        }
    }
    

    メソッドで定義
    クラス定義のURLに対して、クラス定義に@RequestMappingがマークされていない場合、メソッドにマークされているURLはWEBアプリケーションのルートディレクトリに対して、さらに細分化されたマッピング情報を提供します.
    package com.helloworld;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    @Controller
    public class HelloWorld2 {
    
        @RequestMapping("/hello2")
        public String hello(){
            return "success";
        }
    }