隨筆-126  評(píng)論-247  文章-5  trackbacks-0

          @RequestMapping 參數(shù)說(shuō)明

          value
          定義處理方法的請(qǐng)求的 URL 地址。
          method
          定義處理方法的 http method 類型,如 GET、POST 等。
          params
          定義請(qǐng)求的 URL 中必須包含的參數(shù)。
          headers
          定義請(qǐng)求中 Request Headers 必須包含的參數(shù)。

          @RequestMapping 的用法

          @RequestMapping 有兩種標(biāo)注方式,一種是標(biāo)注在類級(jí)別上,一種是標(biāo)注在方法級(jí)別上。
          標(biāo)注在方法上時(shí),value 表示訪問(wèn)該方法的 URL 地址。標(biāo)注在類上時(shí),value 相當(dāng)于一個(gè)命名空間,即訪問(wèn)該 Controller 下的任一方法都需
          要帶上這個(gè)命名空間。
          ExampleController.java
          @Controller
          @RequestMapping("/example")
          public class ExampleController {

              @RequestMapping
              public String execute(){
                  return "example_page";
              }
              
              @RequestMapping("/todo")
              public String doSomething(){
                  return "example_todo_page";
              }
              
          }
          /example.action
          執(zhí)行的是 execute() 方法。execute() 方法的 @RequestMapping 注解缺省 value 值,在這種情況下,當(dāng)訪問(wèn)命名空間時(shí)默認(rèn)執(zhí)行的是這個(gè)
          方法。方法級(jí)別上的 @RequestMapping 標(biāo)注是必須的,否則方法無(wú)法被正確訪問(wèn)。
          /example/todo.action
          執(zhí)行的是 doSomething() 方法。類級(jí)別上的 @RequestMapping 標(biāo)注不是必須的,在不寫(xiě)的情況下,方法上定義的 URL 都是絕對(duì)地址,否則,
          方法上定義的 URL 都是相對(duì)于它所在的 Controller 的。

          @RequestMapping(method)

          指定 method 的值
          @RequestMapping(value = "/register", method = RequestMethod.GET)
          public String register(){
              return "example_register_page";
          }
          method 的值一旦指定,那么,處理方法就只對(duì)指定的 http method 類型的請(qǐng)求進(jìn)行處理。
          @RequestMapping(value = "/register", method = RequestMethod.GET)
          public String register1(){
              return "example_register_get_page";
          }

          @RequestMapping(value = "/register", method = RequestMethod.POST)
          public String register2(){
              return "example_register_post_page";
          }
          可以為多個(gè)方法映射相同的 URI,不同的 http method 類型,Spring MVC 根據(jù)請(qǐng)求的 method 類型是可以區(qū)分開(kāi)這些方法的。
          當(dāng) /example/register.action 是以 GET 的方式提交的時(shí)候,Spring MVC 調(diào)用 register1() 來(lái)處理請(qǐng)求;若是以 POST 的方式提交,
          則調(diào) register2() 來(lái)處理提交的請(qǐng)求。

          缺省 method 的值
          @RequestMapping("/enter")
          public String enter(){
              return "example_enter_page";
          }
          method 若是缺省沒(méi)指定,并不是說(shuō)它默認(rèn)只處理 GET 方式的請(qǐng)求,而是它可以處理任何方式的 http method 類型的請(qǐng)求。
          指定 method 是為了細(xì)化映射 ( 縮小處理方法的映射范圍 ),在 method 沒(méi)有指定的情況下,它的映射范圍是最大的。

          @RequestMapping(params)

          與 method 相類似,作用是為了細(xì)化映射。只有當(dāng) URL 中包含與 params 值相匹配的參數(shù)的請(qǐng)求,處理方法才會(huì)被調(diào)用。
          @RequestMapping(value = "/find", params = "target")
          public String find1(){
              return "example_find1_page";
          }

          @RequestMapping(value = "/find", params = "!target")
          public String find2(){
              return "example_find2_page";
          }

          @RequestMapping(value = "/search", params = "target=product")
          public String search1(){
              return "example_search1_page";
          }

          @RequestMapping(value = "/search", params = "target!=product")
          public String search2(){
              return "example_search2_page";
          }
          find1()
          請(qǐng)求的 URL 中必須要有 target 參數(shù),才能夠到達(dá)此方法。如 /example/find.action?target 或 /example/find.action?target=x 等
          find2()
          請(qǐng)求的 URL 中必須不能有 target 參數(shù),才能夠到達(dá)此方法。如 /example/find.action 或 /example/find.action?q=x 等
          search1()
          請(qǐng)求的 URL 中必須要有 target=product 參數(shù),才能夠到達(dá)此方法。如 /example/search.action?target=product 等
          search2()
          請(qǐng)求的 URL 中必須不能有 target=product 參數(shù),才能夠到達(dá)此方法。如 /example/search.action?target=article 等

          @RequestMapping(headers)

          headers 的作用也是用于細(xì)化映射。只有當(dāng)請(qǐng)求的 Request Headers 中包含與 heanders 值相匹配的參數(shù),處理方法才會(huì)被調(diào)用。
          @RequestMapping(value = "/specify", headers = "accept=text/*")
          public String specify(){
              return "example_specify_page";
          }
          請(qǐng)求的 Request Headers 中 Accept 的值必須匹配 text/* ( 如 text/html ),方法才會(huì)被調(diào)用。

          源代碼下載

          springmvc-request-mapping.zip





            
          posted on 2014-08-15 21:35 fancydeepin 閱讀(39588) 評(píng)論(1)  編輯  收藏

          評(píng)論:
          # re: spring mvc(2):請(qǐng)求地址映射(@RequestMapping) 2014-08-19 23:07 | corplib.com
          到底怎么回事了呢?  回復(fù)  更多評(píng)論
            

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 桦南县| 张家口市| 南丹县| 新宾| 兴海县| 台东市| 方山县| 桃江县| 通道| 曲阳县| 呼和浩特市| 石阡县| 扎赉特旗| 宁波市| 休宁县| 通州市| 三门县| 商都县| 鄂尔多斯市| 玉山县| 二连浩特市| 苗栗县| 崇明县| 科尔| 浦江县| 稷山县| 南岸区| 渝中区| 仙游县| 儋州市| 赤城县| 苍山县| 大荔县| 虎林市| 自贡市| 财经| 梓潼县| 个旧市| 巴彦淖尔市| 铜陵市| 焦作市|