Spring Boot @DeleteMapping

使用DELETE方式进行交互
说明:ResponseData为自定义返回体{String code, String msg, List<?> data}
PollutionData 为一个entity  属性部分包含{String id, String name}
CodeEnum、MsgEnum为自定义枚举类,定义了一些常量
两种方式皆测试过
环境:win7+idea2018.2+jdk10.0.2+springboot  前端编辑工具为hbuilder
两种方式:
1、
//方法一 使用POST+ _method:"DELETE" + filter(springboot不需要我们配置)
//这里的传输对象为json对象,后台直接接受
var r=confirm("方法一:确认删除该条数据?"); if(r){ //var data = {_method:"DELETE", id:"456456",name:"征集"}; var data = {_method:"DELETE"};//_method:"DELETE"必须,其他属性看你需求  $.ajax({ url:"http://192.168.2.116:8080/pollution/delete/1786vdsds863", type:"POST", data:data, dataType:"json", success:function(result){ alert(result.msg); } }); }

@DeleteMapping("/pollution/delete/{id}")
public ResponseData deletePollutionById(@PathVariable("id")String id, PollutionData data){System.out.println(id);System.out.println(data);return new ResponseData(CodeEnum.SUCCESS.getCode(),MsgEnum.SUCCESS.getMsg(),null); }

2、

//方法二 使用DELETE请求
//这是的传输对象为json字符串  后台使用@RequestBody注解解析该字符串并将字符串映射到对应实体上
var r=confirm("方法二:确认删除该条数据?"); if(r){ var id = "123133"; var jsonstr = { id: id, name: "12345"}; console.log(jsonstr); $.ajax({ url:"http://192.168.2.116:8080/pollution/delete/" + id, type:"DELETE", contentType:"application/json",//设置请求参数类型为json字符串 data:JSON.stringify(jsonstr),//将json对象转换成json字符串发送 dataType:"json", success:function(result){ alert(result.msg); } }); } /**如果不需要传递参数,可以不写下面的几项 * contentType:"application/json",//设置请求参数类型为json字符串 data:JSON.stringify(jsonstr),//将json对象转换成json字符串发送 dataType:"json", */

@DeleteMapping("/pollution/delete/{id}")
public ResponseData deletePollutionById(@PathVariable("id")String id, @RequestBody PollutionData data){System.out.println(id);System.out.println(data);return new ResponseData(CodeEnum.SUCCESS.getCode(),MsgEnum.SUCCESS.getMsg(),null); }

参考:https://blog.csdn.net/liuyuanjiang109/article/details/78972644

分类: Java,Spring Boot
标签: spring boot, Ajax, DeleteMapping

  1、@requestBody注解常用来处理content-type不是默认的application/x-www-form-urlcoded编码的内容,比如说:application/json或者是application/xml等。一般情况下来说常用其来处理application/json类型。

  2、

    通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
    例如说以下情况:
    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });

    @requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }
    这种情况是将JSON字符串中的两个变量的值分别赋予了两个字符串,但是呢假如我有一个User类,拥有如下字段:
      String userName;
      String pwd;
    那么上述参数可以改为以下形式:@requestBody User user 这种形式会将JSON字符串中的值赋予user中对应的属性上
    需要注意的是,JSON字符串中的key必须对应user中的属性名,否则是请求不过去的。

 3、

    在一些特殊情况@requestBody也可以用来处理content-type类型为application/x-www-form-urlcoded的内容,只不过这种方式

    不是很常用,在处理这类请求的时候,@requestBody会将处理结果放到一个MultiValueMap<String,String>中,这种情况一般在
    特殊情况下才会使用,
    例如jQuery easyUI的datagrid请求数据的时候需要使用到这种方式、小型项目只创建一个POJO类的话也可以使用这种接受方式

分类: springMVC
标签: @requestBody
好文要顶 关注我 收藏该文

既然琴瑟起
关注 - 0
粉丝 - 55

+加关注

7
4

« 上一篇:jQuery中$.post()的使用
» 下一篇:@responseBody注解的使用

posted @ 2016-08-15 20:51 既然琴瑟起 阅读(90556) 评论(5) 编辑 收藏
评论
回复引用

#1楼 2018-02-28 16:53 | 娜娜娜娜小姐姐

@requestBody String userName,@requestBody String pwd
两个参数用postman测试时,Json格式怎么写?
支持(0)反对(0)

回复引用

#2楼 2018-07-25 11:19 | miaoch

转成实体类必须引入com.fasterxml.jackson.core包
否则会报415错误。
还有一个问题 我测试 @RequestBody userName pwd
是无效的,会报错。
个人感觉一个请求只能有一个@RequestBody,并且就是指整个内容(即使我只写一个pwd,pwd也是赋予了整个json)。
不知道是我搞错了还是什么,希望博主能重新解答一下。
有点怀疑博主是不是搞混了@RequestParam和@RequestBody
支持(0)反对(0)

回复引用

#3楼 2018-08-14 15:43 | wishingpep

ajax正确的写法是
contentType:"application/json charset=utf-8",
而不是
content-type:"application/json charset=utf-8",
支持(1)反对(0)

回复引用

#4楼 2018-09-14 13:28 | 白棱镜

@ miaoch
只能有一个哈
支持(0)反对(0)

回复引用

#5楼 2018-11-04 18:21 | 行走的老熊

学习了,谢谢

1、

  @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

  数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

2、  

  @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'

  效果等同于如下代码:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }

浅谈@RequestMapping @ResponseBody 和 @RequestBody 注解的用法与区别

2017年11月16日 16:09:29 不止会New 阅读数:129308 标签: web开发 框架 更多

个人分类: Java相关技术

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ff906317011/article/details/78552426

博主说:首先,大家在使用SSM框架进行web开发的时候,经常会在Ctrl层遇到@RequestMapping、@ResponseBody以及@RequestBody这三个参数,博主就以自己在项目开发中总结的一些知识点浅谈一下三者之间微妙的关系。

1.@RequestMapping

国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径;用于方法上,表示在类的父路径下追加方法上注解中的地址将会访问到该方法,此处需注意@RequestMapping用在类上可以没用,但是用在方法上必须有

例如:

@Controller
//设置想要跳转的父路径
@RequestMapping(value = "/Controllers")
public class StatisticUserCtrl { //如需注入,则写入需要注入的类 //@Autowired // 设置方法下的子路经 @RequestMapping(value = "/method") public String helloworld() { return "helloWorld"; } }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

其原理也非常好了解,其对应的 action 就是“ (父路径) controller/(父路径下方法路经)method ”。因此,在本地服务器上访问方法 http://localhost:8080/controller/method 就会返回(跳转)到“ helloWorld.jsp ”页面。

说到这了,顺便说一下 @PathVariable 注解,其用来获取请求路径(url )中的动态参数。

页面发出请求:

function login() {var url = "${pageContext.request.contextPath}/person/login/"; var query = $('#id').val() + '/' + $('#name').val() + '/' + $('#status').val(); url += query; $.get(url, function(data) { alert("id: " + data.id + "name: " + data.name + "status: " + data.status); }); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

例如:

/**
* @RequestMapping(value = "user/login/{id}/{name}/{status}") 中的 {id}/{name}/{status}
* 与 @PathVariable int id、@PathVariable String name、@PathVariable boolean status
* 一一对应,按名匹配。
*/@RequestMapping(value = "user/login/{id}/{name}/{status}") @ResponseBody //@PathVariable注解下的数据类型均可用 public User login(@PathVariable int id, @PathVariable String name, @PathVariable boolean status) { //返回一个User对象响应ajax的请求 return new User(id, name, status); }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

@ResponseBody

@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
作用:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
使用时机:
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

当页面发出异步请求:

function login() {var datas = '{"username":"' + $('#username').val() + '","userid":"' + $('#userid').val() + '","status":"' + $('#status').val() + '"}'; $.ajax({ type : 'POST', contentType : 'application/json', url : "${pageContext.request.contextPath}/user/login", processData : false, dataType : 'json', data : datas, success : function(data) { alert("userid: " + data.userid + "username: " + data.username + "status: "+ data.status); }, error : function(XMLHttpRequest, textStatus, errorThrown) { alert("出现异常,异常信息:"+textStatus,"error"); } }); };
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

例如:

@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中,返回json对象响应回去
public User login(User user) { User user = new User(); user .setUserid(1); user .setUsername("MrF"); user .setStatus("1"); return user ; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

异步获取 json 数据,加上 @Responsebody 注解后,就会直接返回 json 数据。

@RequestBody

@RequestBody 注解则是将 HTTP 请求正文插入方法中,使用适合的 HttpMessageConverter 将请求体写入某个对象。

作用:

1) 该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上;
2) 再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

使用时机:

A) GET、POST方式提时, 根据request header Content-Type的值来判断:

application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);

B) PUT方式提交时, 根据request header Content-Type的值来判断:

application/x-www-form-urlencoded, 必须;multipart/form-data, 不能处理;其他格式, 必须;

说明:request的body部分的数据编码格式由header部分的Content-Type指定;

例如:

@RequestMapping(value = "user/login")
@ResponseBody
// 将ajax(datas)发出的请求写入 User 对象中
public User login(@RequestBody User user) { // 这样就不会再被解析为跳转路径,而是直接将user对象写入 HTTP 响应正文中 return user; }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

最后感谢walkerjong的spring源码支持,如有问题请大家多多评论,你的建议是我成长道路中必不可少的养分,还是那句话,我们不止会New!

转载于:https://www.cnblogs.com/yasepix/p/9913531.html

Spring Boot @DeleteMapping(转)相关推荐

  1. Spring Boot 2.X 对 web 的开发支持(二)

    Spring Boot 2.X 对 web 的支持开发 上章节的 Spring Boot 的入门案例,我们感受到 Spring Boot 简单的配置即可运行项目. 今天了解 Spring Boot 对 ...

  2. 40 个 Spring Boot 常用注解

    以下文章来源方志朋的博客,回复"666"获面试宝典 作者 | 谭朝红 链接 | ramostear.com 一.Spring Web MVC 与 Spring Bean 注解 Sp ...

  3. 一份 Spring Boot 项目搭建模板

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 前言 建立一个全新的项目,或者把旧的庞大的项目,进行拆分成 ...

  4. Spring Boot+Gradle+ MyBatisPlus3.x搭建企业级的后台分离框架

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 作者:任务加油站 原文:toutiao.com/i6861 ...

  5. Spring Boot 前后端配合及接口化测试学习记录[3]

    前后端不分离 1.对静态资源的映射处理 2.模板引擎: 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成 ...

  6. 基于 MongoDB 及 Spring Boot 的文件服务器的实现

    MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案.它支持的数据结构非常松散,是类似 ...

  7. Spring Boot 搭载属于你的网站框架(一)

    Spring Boot 搭载你的网站框架(本次demo演示 使用工具 idea) 使用springboot优点,简单快速便捷,只需要管理好pom文件,构建一个新项目是非常快的. 而且内置tomcat, ...

  8. JSONAssert Spring Boot Test

    2019独角兽企业重金招聘Python工程师标准>>> JSONAssert 本此测试用例正确的原始顺序为(需求见POST) Body = [{"driver": ...

  9. Spring Boot 2.x基础教程:使用国产数据库连接池Druid

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | http://blog.di ...

  10. Spring Boot 2.x基础教程:使用Swagger2构建强大的API文档

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 翟永超 来源 | didispace.com/spring-boot-learni ...

最新文章

  1. Windows 服务全攻略(2)
  2. 在调研近百家企业需求后,我们推出了新产品线——神策客景
  3. stack与queue
  4. resource 注解下的name爆红
  5. html 事件重叠,两个div叠加触发事件发生闪烁问题的解决方法
  6. 理解JavaScript原型
  7. fread返回值0 feof返回值为16 问题解决。
  8. spring mvc和swagger整合
  9. 图像定位的优化、评价和应用简介
  10. Axis2在eclipse和tomcat下的配置
  11. fcntl函数的SET用法
  12. android GPS驱动
  13. Mybatis源码SqlSession源码分析
  14. c语言一维高斯滤波器,高斯滤波简介,高斯滤波性质及应用
  15. 影像数据库 | ADNI数据下载/分析
  16. 给我“空降”一个弟兄
  17. 信用飞疑似信息泄露致用户被骗近4万元,平台借款利率高达75%
  18. “算力经济”时代扑面而来,智算中心成未来数据中心进化方向
  19. 谷歌 地图 android studio,Android Studio百度地图开发(一)
  20. 全志A64平台 TP9950 BT656输入驱动调试(1)环境搭建驱动编写

热门文章

  1. 计算机显卡型号中数字含义详解,显卡型号中字母和数字所代表的含义.doc
  2. 本周(12.23-12.29)半价电子书
  3. web前端第一次作业
  4. 西门子三开接线图解_接近开关三线制接线方法
  5. 对话职业经理人阿朱:程序员转型期的职业选择
  6. 数据库事务ACID四大特性:原子性、一致性, 隔离性, 持久性
  7. TesterHome android app 编写历程(四)
  8. w ndows系统启动日志ID,WIN7日志总能看到 特殊登陆 事件ID 4672,是怎么回事?
  9. 餐馆点菜系统python程序_Python写一个自动点餐程序
  10. 20200804自编译openwrtx86_64固件,源码来自L大