最近在用postman测试postman接口,对于springmvc传值这一块,测试了几种常用方式,总结一下。对于postman这个工具的使用也增加了了解。postman测试很棒,有了工具,测试接口,事倍功半。

一、单个参数传递


1.@RequestBody注解

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;">   /**
  2. * 测试单个参数@RequestBody
  3. */
  4. @CrossOrigin
  5. @RequestMapping(value = {"/insertTestParamsRequest"}, method = RequestMethod.GET)
  6. @ResponseBody
  7. public void insertTestParamsRequest(@RequestBody String name, @RequestBody String age) {
  8. System.out.println("name=====" + name);
  9. System.out.println("age=====" + age);
  10. }
  11. </span>
   /**
* 测试单个参数@RequestBody
*/
@CrossOrigin
@RequestMapping(value = {"/insertTestParamsRequest"}, method = RequestMethod.GET)
@ResponseBody
public void insertTestParamsRequest(@RequestBody String name, @RequestBody String age) {
System.out.println("name=====" + name);
System.out.println("age=====" + age);
}

测试请求路径

2.@RequestParam

常用来处理简单类型的绑定,通过Request.getParameter() 获取的String可直接转换为简单类型的情况( ;

该注解有两个属性: value、required; value用来指定要传入值的id名称,required用来指示参数是否必须绑定;

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;"> /**
  2. * 测试单个参数@RequestParam
  3. */
  4. @CrossOrigin
  5. @RequestMapping(value = {"/insertTestParams"}, method = RequestMethod.GET)
  6. @ResponseBody
  7. public void insertTestParams(HttpServletRequest request, @RequestParam String name, @RequestParam String age) {
  8. System.out.println("name=====" + name);
  9. System.out.println("age=====" + age);
  10. }</span>
 /**
* 测试单个参数@RequestParam
*/
@CrossOrigin
@RequestMapping(value = {"/insertTestParams"}, method = RequestMethod.GET)
@ResponseBody
public void insertTestParams(HttpServletRequest request, @RequestParam String name, @RequestParam String age) {
System.out.println("name=====" + name);
System.out.println("age=====" + age);
}

请求路径:



3.@PathVariable注解

路径为resultful风格,将参数当做请求路径。

当使用@RequestMapping URI template 样式映射时, 即 Url/{paramId}, 这时的paramId可通过 @Pathvariable注解绑定它传过来的值到方法的参数上。

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;">   /**
  2. * 测试单个参数@PathVariable
  3. */
  4. @CrossOrigin
  5. @RequestMapping(value = {"/insertTest/{name}/{age}"}, method = RequestMethod.GET)
  6. @ResponseBody
  7. public void insertTestPathVeriable(HttpServletRequest request, @PathVariable("name") String name, @PathVariable String age) {
  8. System.out.println("name=====" + name);
  9. System.out.println("age=====" + age);
  10. }</span>
   /**
* 测试单个参数@PathVariable
*/
@CrossOrigin
@RequestMapping(value = {"/insertTest/{name}/{age}"}, method = RequestMethod.GET)
@ResponseBody
public void insertTestPathVeriable(HttpServletRequest request, @PathVariable("name") String name, @PathVariable String age) {
System.out.println("name=====" + name);
System.out.println("age=====" + age);
}

上面代码把URI template 中变量 name的值和age的值,绑定到方法的参数上。若方法参数名称和需要绑定的uri template中变量名称不一致,需要在@PathVariable("name")指定uri template中的名称。

二、传递pojo对象


1.@RequestBody注解

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;">    /*测试添加实体*/
  2. @CrossOrigin
  3. @RequestMapping(value = {"/insertEntityTest"}, method = RequestMethod.POST)
  4. @ResponseBody
  5. public void insertEntityTest(@RequestBody CurriculumScheduleEntity curriculumScheduleEntity) {
  6. System.out.println("name=====" + curriculumScheduleEntity.getClassId());
  7. System.out.println("age=====" + curriculumScheduleEntity.getTeachclassId());
  8. }</span>
    /*测试添加实体*/
@CrossOrigin
@RequestMapping(value = {"/insertEntityTest"}, method = RequestMethod.POST)
@ResponseBody
public void insertEntityTest(@RequestBody CurriculumScheduleEntity curriculumScheduleEntity) {
System.out.println("name=====" + curriculumScheduleEntity.getClassId());
System.out.println("age=====" + curriculumScheduleEntity.getTeachclassId());
}

postman通过json格式测试

2.直接写实体

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;">    /*测试添加实体*/
  2. @CrossOrigin
  3. @RequestMapping(value = {"/insertTest"}, method = RequestMethod.POST)
  4. @ResponseBody
  5. public void insertTest(CurriculumScheduleEntity curriculumScheduleEntity) {
  6. System.out.println("name=====" + curriculumScheduleEntity.getClassId());
  7. System.out.println("age=====" + curriculumScheduleEntity.getWeekId());
  8. }</span>
    /*测试添加实体*/
@CrossOrigin
@RequestMapping(value = {"/insertTest"}, method = RequestMethod.POST)
@ResponseBody
public void insertTest(CurriculumScheduleEntity curriculumScheduleEntity) {
System.out.println("name=====" + curriculumScheduleEntity.getClassId());
System.out.println("age=====" + curriculumScheduleEntity.getWeekId());
}

form表单测试

  1. <span style="font-family:'KaiTi_GB2312';font-size:18px;"><div>
  2. <form action="/curriculumSchedule/insertTest" method="post">
  3. classId :<input  name="classId"><br>
  4. teachClassId:<input   name="weekId"><br>
  5. <input type="submit" value="提交">
  6. </form>
  7. </div></span>
<div>
<form action="/curriculumSchedule/insertTest" method="post">
classId :<input name="classId"><br>
teachClassId:<input name="weekId"><br>
<input type="submit" value="提交">
</form>
</div>

postman测试格式

三、postman测试List类型参数

以List<string>为例,测试批量删除方法,参数为List<String>。写这个其实没有什么技术,但是中午在测试List接口的时候,用postman测试,格式一致写错,不知道用postman该怎么测试了。所以花费了一点时间,记录下来,思考这个工具的执行过程。

Controller方法

3.参考连接

http://www.cnblogs.com/sandyliu1999/p/4802706.html

2018_05_24更新(6.0版本)

1、如果要传递多个参数其中一个Long类型的数组,另外一个是Long类型的数据,还有一个实体,那么后者可以直接传,前者的话用Body中的formData来进行传递就好了,具体如下图:

![](https://images2018.cnblogs.com/blog/1112483/201805/1112483-20180524171849503-376268906.png)

2、在上面提到传递实体接收的方式,我试了不行不过可以直接将实体属性按照表单那样去写就可以获取到了,如下图所示:

![](https://images2018.cnblogs.com/blog/1112483/201805/1112483-20180524175136404-560497635.png)
小技巧:可以直接复制JSON中的选项,然后将光标点击在“x-www-form-ulencoded”第一项最后Ctrl+V就可以直接粘贴了非常方便。

【springmvc】传值的几种方式&&postman接口测试的更多相关文章

  1. ASP.NET 页面之间传值的几种方式

    开篇概述 对于任何一个初学者来说,页面之间传值可谓是必经之路,却又是他们的难点.其实,对大部分高手来说,未必不是难点. 回想2016年面试的将近300人中,有实习生,有应届毕业生,有1-3年经验的,有 ...

  2. 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)

    简  介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...

  3. 【ASP.NET MVC系列】浅谈ASP.NET 页面之间传值的几种方式

    ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...

  4. MVC5控制器传值的三种方式(ViewData,ViewBag,TempData),刚刚学习MVC5的新手,希望各位大神多多指教

    mvc传值的三种方式:1.ViewData 在使用过程中需要类型转换 例子: ViewData["MyTitle"]="ViewData传值"; 引用: @Vi ...

  5. EF5+MVC4系列(7) 后台SelectListItem传值给前台显示Select下拉框;后台Action接收浏览器传值的4种方式; 后台Action向前台View视图传递数据的四种方式(ViewDate,TempDate,ViewBag,Model (实际是ViewDate.Model传值))

    一:后台使用SelectListItem 传值给前台显示Select下拉框 我们先来看数据库的订单表,里面有3条订单,他们的用户id对应了 UserInfo用户表的数据,现在我们要做的是添加一个Ord ...

  6. MVC中控制器向视图传值的四种方式

    MVC中的控制器向视图传值有四种方式分别是 1 ViewDate  2.ViewBag   3.TempDate  4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...

  7. ASP.NET页面间传值的几种方式

    ASP.NET页面间传值的几种方式 1.使用QueryString 使用QuerySting在页面间传递值已经是一种很老的机制了,这种方法的主要优点是实现起来非常简单,然而它的缺点是传递的值是会显示在 ...

  8. vue传值的几种方式

    props:适用于 父组件 ==> 子组件 通信 由父组件传值子组件在props中接收即可: (由父组件给子组件传递 函数类型 的props可实现 子组件 ==> 父组件 传递数据,较为繁 ...

  9. 菜鸟学习Spring——SpringMVC注解版前台向后台传值的两种方式

    一.概述. 在很多企业的开法中常常用到SpringMVC+Spring+Hibernate(mybatis)这样的架构,SpringMVC相当于Struts是页面到Contorller直接的交互的框架 ...

随机推荐

  1. centOS下安装JDK1.8.60,glassfish4.1.1以及MySQL

    一.安装环境 操作系统 Windows7 Enterprise 64位 需要用到的软件 JDK:jdk-8u60-linux-x64.rpm Glassfish: Glassfish4.1.1.zip ...

  2. jmeter(十六)Jmeter之Bean shell使用(一)

    一.什么是Bean Shell BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言(这点和JS类似); BeanS ...

  3. 如何使用mysqldump命令导入导出数据库下的数据或表结构(远程or本地都适合)

    不多说,直接上干货! https://www.cloudera.com/documentation/manager/5-1-x/Cloudera-Manager-Installation-Guide/ ...

  4. dockerfile构建的镜像

    转载请注明出处 https://www.cnblogs.com/majianming/p/9536975.html 在每执行一个命令时,便会commit形成一个层,最后形成堆栈式的结构.最后的镜像是各 ...

  5. 【Java】包装类型

    Java中的基本类型功能简单,不具备对象的特性,为了使基本类型具备对象的特性,所以出现了包装类,就可以像操作对象一样操作基本类型数据. 一.基本类型对应的包装类 基本类型                ...

  6. [BZOJ1061][Noi2008]志愿者招募 线性规划+费用流

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1061 根据题意列方程,然后用网络流解线性规划. 题解直接贴ByVoid的吧,太神了:htt ...

  7. Vue 数组和对象更新,但是页面没有刷新

    在使用数组的时候,数组内部数据发生改变,但是与数组绑定的页面的数据却没有发生变化. <ul> <li v-for="(item,index) in todos" ...

  8. 数据库系统概论(1)——Chap. 1 Introduction

    数据库系统概论--Introduction 一.数据库的4个基本概念 数据(data):数据是数据库中存储的基本单位.我们把描述事物的符号记录称为数据.数据和关于数据的解释是不可分的,数据的含义称为数 ...

  9. 【转】Nutz | Nutz项目整合Spring实战

    http://blog.csdn.net/evan_leung/article/details/54767143 Nutz项目整合Spring实战 前言 Github地址 背景 实现步骤 加入spri ...

  10. lua 之 三木运算符

    在c语言中我三目运算符这么写: a?b:c 例如: max = a>b?a:b; 在lua中我们这么写 max = a>b and a or b 运行如下: