1. 程式人生 > 程式設計 >Springmvc RequestMapping請求實現方法解析

Springmvc RequestMapping請求實現方法解析

請求url

標記請求URl很簡單,只需要在相應的方法上添加註解即可:

@Controller
public class HelloController {
  @RequestMapping("/hello")
  public ModelAndView hello() {
    return new ModelAndView("hello");
  }
}

這裡 @RequestMapping(“/hello”) 表示當請求地址為 /hello 的時候,這個方法會被觸發。其中,地址可以是多個,就是可以多個地址對映到同一個方法。

@Controller
public class HelloController {
  @RequestMapping({"/hello","/hello2"})
  public ModelAndView hello() {
    return new ModelAndView("hello");
  }
}

這個配置,表示 /hello 和 /hello2 都可以訪問到該方法

請求窄化

同一個專案中,會存在多個介面,例如訂單相關的介面都是 /order/xxx 格式的,使用者相關的介面都是 /user/xxx 格式的。為了方便處理,這裡的字首(就是 /order、/user)可以統一在 Controller 上面處理。

@Controller
@RequestMapping("/user")
public class HelloController {
  @RequestMapping({"/hello","/hello2"})
  public ModelAndView hello() {
    return new ModelAndView("hello");
  }
}

當類上加了 @RequestMapping 註解之後,此時,要想訪問到 hello ,地址就應該是 /user/hello 或者 /user/hello2

請求方法限定

預設情況下,使用 @RequestMapping 註解定義好的方法,可以被 GET 請求訪問到,也可以被 POST 請求訪問到,但是 DELETE 請求以及 PUT 請求不可以訪問到。

當然,我們也可以指定具體的訪問方法:

@Controller
@RequestMapping("/user")
public class HelloController {
  @RequestMapping(value = "/hello",method = RequestMethod.GET)
  public ModelAndView hello() {
    return new ModelAndView("hello");
  }
}

通過 @RequestMapping 註解,指定了該介面只能被 GET 請求訪問到,此時,該介面就不可以被 POST 以及請求請求訪問到了。強行訪問會報如下錯誤:

Springmvc RequestMapping請求實現方法解析

當然,限定的方法也可以有多個:

@Controller
@RequestMapping("/user")
public class HelloController {
  @RequestMapping(value = "/hello",method = {RequestMethod.GET,RequestMethod.POST,RequestMethod.PUT,RequestMethod.DELETE})
  public ModelAndView hello() {
    return new ModelAndView("hello");
  }
}

此時,這個介面就可以被 GET、POST、PUT、以及 DELETE 訪問到了。但是,由於 JSP 支支援 GET、POST 以及 HEAD ,所以這個測試,不能使用 JSP 做頁面模板。可以講檢視換成其他的,或者返回 JSON,這裡就不影響了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。