您的位置:首页 > 移动开发

Spring mvc中@Requestmapping参数配置

2015-04-12 13:36 225 查看
1) 普通path路径

@RequestMapping(value = "/foos")

@ResponseBody

public String getFoosBySimplePath() {

    return "Get some Foos";

}

然后尝试用curl请求下

curl -i http://localhost:8080/spring-mvc/foos
2) 指定RequestMethod.POST

@RequestMapping(value = "/foos", method = RequestMethod.POST)

@ResponseBody

public String postFoos() {

    return "Post some Foos";

}

curl i -X POST http://localhost:8080/spring-mvc/foos 3) 指定http请求头

@RequestMapping(value = "/foos", headers = "key=val")

@ResponseBody

public String getFoosWithHeader() {

    return "Get some Foos with Header";

}

其中在headers可以跟多个了,如:

RequestMapping(value = "/foos", headers = { "key1=val1", "key2=val2" })

@ResponseBody

public String getFoosWithHeaders() {

    return "Get some Foos with Header";

}

注意curl的请求为:

curl
-i -H "key:val" http://localhost:8080/spring-mvc/foos
4)@RequestMapping中的新的product和consume.

   在spring
3.0中,可以指定请求头的media格式,如:

@RequestMapping(value = "/foos", method = RequestMethod.GET, headers = "Accept=application/json")

@ResponseBody

public String getFoosAsJsonFromBrowser() {

    return "Get some Foos with Header Old";

}
curl测试:

curl -H "Accept:application/json,text/html" http://localhost:8080/spring-mvc/foos
如果在3.1中,则有新的 produces和consume的属性了,如:

@RequestMapping(value = "/foos", method = RequestMethod.GET, produces = "application/json")

@ResponseBody

public String getFoosAsJsonFromREST() {

    return "Get some Foos with Header New";

}

如果用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 单一的

@RequestMapping(value = "/foos/{id}")

@ResponseBody

public String getFoosBySimplePathWithPathVariable(@PathVariable("id") long id) {

   return "Get a specific Foo with id=" + id;

}

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

@RequestMapping(value = "/foos/{fooid}/bar/{barid}")

@ResponseBody

public String getFoosBySimplePathWithPathVariables(@PathVariable long fooid, @PathVariable long barid) {

    return "Get a specific Bar with id=" + barid + " from a Foo with id=" + fooid;

}

curl http://localhost:8080/spring-mvc/foos/1/bar/2
3 也支持正则表达式
 @RequestMapping(value = "/bars/{numericId:[\\d]+}")

@ResponseBody

public String getBarsBySimplePathWithPathVariable(@PathVariable final long numericId) {

    return "Get a specific Bar with id=" + numericId;

}
参数只接受数字

6) requestparam

 http://localhost:8080/spring-mvc/bars?id=100

@RequestMapping(value = "/bars")

@ResponseBody

public String getBarBySimplePathWithRequestParam(@RequestParam("id") long id) {

    return "Get a specific Bar with id=" + id;

}

@RequestMapping(value = "/bars", params = "id")

@ResponseBody

public String getBarBySimplePathWithExplicitRequestParam(@RequestParam("id") long id) {

  return "Get a specific Bar with id=" +
id;

}

7) RequestMapping支持多个映射路径映射到同一个controller,如:

@RequestMapping(value = { "/advanced/bars", "/advanced/foos" })

@ResponseBody

public String getFoosOrBarsByPath() {

    return "Advanced - Get some Foos or Bars";

}

curl -i http://localhost:8080/spring-mvc/advanced/foos
curl -i http://localhost:8080/spring-mvc/advanced/bars
甚至还支持put,post同时请求,如:

@RequestMapping(value = "/foos/multiple", method = { RequestMethod.PUT, RequestMethod.POST })

@ResponseBody

public String putAndPostFoos() {

    return "Advanced - PUT and POST within single method";

}

curl -i -X POST http://localhost:8080/spring-mvc/foos/multiple
curl -i -X PUT http://localhost:8080/spring-mvc/foos/multiple
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: