Spring - @PathVariable、@RequestParam 、@RequestBody的使用

@PathVariable

在url中已经预留了变量的占位符时,需要使用@PathVariable,顾名思义,是路径(path)上的变量(variable),例如:
param1可以通过如下方式配置:

@RequestMapping(value="/springmvc/{param1}", method = RequestMethod.GET)
public String getDetails (
    @RequestParam(value="param1") String param1) {
...
}

实现GET请求的url是:

http://localhost:8080/springmvc/param1value

@RequestParam

在url中没有预留参数的占位符时,需要使用@RequestParam,顾名思义,是请求(Request)中的参数(Param)。具体使用场景有:

  1. 处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况。
  2. 用来处理Content-Type: 为 application/x-www-form-urlencoded编码的内容,提交方式GET、POST.
@RequestMapping(value="/springmvc", method = RequestMethod.GET)
public String getDetails (
    @RequestParam(value="param1", required=true) String param1,
    @RequestParam(value="param2", required=false) String param2){
...
}

实现GET请求的url是:

http://localhost:8080/springmvc?param1=10&param2=20

@RequestBody

在url中没有预留参数的占位符,且请求中包含结构体对象时,需要使用@RequestBody,顾名思义,是请求(Request)中的结构体(Body)。具体使用场景有:

  • 处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等。它是通过使用 HandlerAdapter 配置的 HttpMessageConverters 来解析 body,然后绑定到相应的bean上的。
@RequestMapping(value="/springmvc", method = RequestMethod.GET)
public String getDetails (@RequestBody User user) {
... 
}

实现GET请求的url是:

$scope.user = {
            username: "foo",
            auth: true,
            password: "bar"
        };    
$http.get('http://localhost:8080/springmvc', $scope.user)

参考文章:
What is difference between @RequestBody and @RequestParam?
@RequestParam vs @PathVariable
@RequestParam @RequestBody @PathVariable 等参数绑定注解详解

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,675评论 1 92
  • Spring的模型-视图-控制器(MVC)框架是围绕一个DispatcherServlet来设计的,这个Servl...
    alexpdh阅读 7,490评论 0 3
  • 在Springmvc的控制器中,经常会用到注解修饰参数,这里主要讲解常用的注解。先来熟悉下content-Type...
    扎Zn了老Fe阅读 4,361评论 0 0
  • 一、渔夫和富人的故事 一个渔夫在海边织网、晒太阳,他很悠闲。一个富人走过来问他,你为什么不去努力工作、去赚更多的钱...
    知识点123阅读 3,196评论 0 1