分享

Spring mvc中@Requestmapping说明

 hehffyy 2016-09-24
1) 普通path路径 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos")  
  2. @ResponseBody  
  3. public String getFoosBySimplePath() {  
  4.     return "Get some Foos";  
  5. }  


  然后尝试用curl请求下 
  curl -i http://localhost:8080/spring-mvc/foos 

2) 指定RequestMethod.POST 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos", method = RequestMethod.POST)  
  2. @ResponseBody  
  3. public String postFoos() {  
  4.     return "Post some Foos";  
  5. }  


  curl i -X POST http://localhost:8080/spring-mvc/foos 

3) 指定http请求头 
 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos", headers = "key=val")  
  2. @ResponseBody  
  3. public String getFoosWithHeader() {  
  4.     return "Get some Foos with Header";  
  5. }  

   其中在headers可以跟多个了,如: 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos", headers = { "key1=val1""key2=val2" })  
  2. @ResponseBody  
  3. public String getFoosWithHeaders() {  
  4.     return "Get some Foos with Header";  
  5. }  



  注意curl的请求为: 
curl -i -H "key:val" http://localhost:8080/spring-mvc/foos 


4)@RequestMapping中的新的product和consume. 
   在spring 3.0中,可以指定请求头的media格式,如: 
 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos", method = RequestMethod.GET, headers = "Accept=application/json")  
  2. @ResponseBody  
  3. public String getFoosAsJsonFromBrowser() {  
  4.     return "Get some Foos with Header Old";  
  5. }  


  curl测试: 
curl -H "Accept:application/json,text/html" http://localhost:8080/spring-mvc/foos 

如果在3.1中,则有新的 produces和consume的属性了,如: 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos", method = RequestMethod.GET, produces = "application/json")  
  2. @ResponseBody  
  3. public String getFoosAsJsonFromREST() {  
  4.     return "Get some Foos with Header New";  
  5. }  


  如果用3.1,但依然用旧的方式,则旧的方式的请求都会自动变成produces和consume了; 

@RequestMapping(value="/testMsgConverter",consumes="text/plain",produces="application/json")  
  
表示handlermethod接受的请求的header中的 Content-Type为text/plain; 
Accept为application/json 



5) @PathVariable 
   1 单一的 
  
Java代码  收藏代码
  1. @RequestMapping(value = "/foos/{id}")  
  2. @ResponseBody  
  3. public String getFoosBySimplePathWithPathVariable(@PathVariable("id"long id) {  
  4.    return "Get a specific Foo with id=" + id;  
  5. }  


测试:curl http://localhost:8080/spring-mvc/foos/1 

2 多个 
 
Java代码  收藏代码
  1. @RequestMapping(value = "/foos/{fooid}/bar/{barid}")  
  2. @ResponseBody  
  3. public String getFoosBySimplePathWithPathVariables(@PathVariable long fooid, @PathVariable long barid) {  
  4.     return "Get a specific Bar with id=" + barid + " from a Foo with id=" + fooid;  
  5. }  


  curl http://localhost:8080/spring-mvc/foos/1/bar/2 
3 也支持正则表达式 
 
Java代码  收藏代码
  1. @RequestMapping(value = "/bars/{numericId:[\\d]+}")  
  2. @ResponseBody  
  3. public String getBarsBySimplePathWithPathVariable(@PathVariable final long numericId) {  
  4.     return "Get a specific Bar with id=" + numericId;  
  5. }  


则参数只接受数字了 

6) requestparam 
 
Java代码  收藏代码
  1. http://localhost:8080/spring-mvc/bars?id=100  
  2.   
  3. @RequestMapping(value = "/bars")  
  4. @ResponseBody  
  5. public String getBarBySimplePathWithRequestParam(@RequestParam("id"long id) {  
  6.     return "Get a specific Bar with id=" + id;  
  7. }  


Java代码  收藏代码
  1. @RequestMapping(value = "/bars", params = "id")  
  2. @ResponseBody  
  3. public String getBarBySimplePathWithExplicitRequestParam(@RequestParam("id"long id) {  
  4.     return "Get a specific Bar with id=" + id;  
  5. }  


7) RequestMapping支持多个映射路径映射到同一个controller,如: 
Java代码  收藏代码
  1. @RequestMapping(value = { "/advanced/bars""/advanced/foos" })  
  2. @ResponseBody  
  3. public String getFoosOrBarsByPath() {  
  4.     return "Advanced - Get some Foos or Bars";  
  5. }  


  curl -i http://localhost:8080/spring-mvc/advanced/foos 
curl -i http://localhost:8080/spring-mvc/advanced/bars 

甚至还支持put,post同时请求,如: 

Java代码  收藏代码
  1. @RequestMapping(value = "/foos/multiple", method = { RequestMethod.PUT, RequestMethod.POST })  
  2. @ResponseBody  
  3. public String putAndPostFoos() {  
  4.     return "Advanced - PUT and POST within single method";  
  5. }  


  curl -i -X POST http://localhost:8080/spring-mvc/foos/multiple 
curl -i -X PUT http://localhost:8080/spring-mvc/foos/multiple 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多