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

  • application/x-www-form-urlencoded, 可选(即非必须,因为这种情况的数据@RequestParam, @ModelAttribute也可以处理,当然@RequestBody也能处理);
  • multipart/form-data, 不能处理(即使用@RequestBody不能处理这种格式的数据);
  • 其他格式, 必须(其他格式包括application/json, application/xml等。这些格式的数据,必须使用@RequestBody来处理);
代码:
 
  1. package com.example.controller;
  2. import org.springframework.web.bind.annotation.GetMapping;
  3. import org.springframework.web.bind.annotation.PathVariable;
  4. import org.springframework.web.bind.annotation.RequestBody;
  5. import org.springframework.web.bind.annotation.RequestMapping;
  6. import org.springframework.web.bind.annotation.RequestMethod;
  7. import org.springframework.web.bind.annotation.RequestParam;
  8. import org.springframework.web.bind.annotation.RestController;
  9. import com.example.bean.RequestLoginBean;
  10. import com.example.response.BaseResponse;
  11. import com.google.gson.Gson;
  12. @RestController
  13. @RequestMapping(value = "/index")
  14. public class Login {
  15. /**
  16. * index home
  17. *
  18. * @return
  19. */
  20. @RequestMapping(value = "/home")
  21. public String home() {
  22. return "index home";
  23. }
  24. /**
  25. * 得到1个参数
  26. *
  27. * @param name
  28. *            用户名
  29. * @return 返回结果
  30. */
  31. @GetMapping(value = "/{name}")
  32. public String index(@PathVariable String name) {
  33. return "oh you are " + name + "<br> nice to meet you";// \n不起作用了,那就直接用html中的标签吧
  34. }
  35. /**
  36. * 简单post请求
  37. *
  38. * @param name
  39. * @param pwd
  40. * @return
  41. */
  42. @RequestMapping(value = "/testpost", method = RequestMethod.POST)
  43. public String testpost() {
  44. System.out.println("hello  test post");
  45. return "ok";
  46. }
  47. /**
  48. * 同时得到两个参数
  49. *
  50. * @param name
  51. *            用户名
  52. * @param pwd
  53. *            密码
  54. * @return 返回结果
  55. */
  56. @GetMapping(value = "/login/{name}&{pwd}")
  57. public String login(@PathVariable String name, @PathVariable String pwd) {
  58. if (name.equals("admin") && pwd.equals("admin")) {
  59. return "hello welcome admin";
  60. } else {
  61. return "oh sorry user name or password is wrong";
  62. }
  63. }
  64. /**
  65. * 通过get请求去登陆
  66. *
  67. * @param name
  68. * @param pwd
  69. * @return
  70. */
  71. @RequestMapping(value = "/loginbyget", method = RequestMethod.GET)
  72. public String loginByGet(@RequestParam(value = "name", required = true) String name,
  73. @RequestParam(value = "pwd", required = true) String pwd) {
  74. return login4Return(name, pwd);
  75. }
  76. /**
  77. * 通过post请求去登陆
  78. *
  79. * @param name
  80. * @param pwd
  81. * @return
  82. */
  83. @RequestMapping(value = "/loginbypost", method = RequestMethod.POST)
  84. public String loginByPost(@RequestParam(value = "name", required = true) String name,
  85. @RequestParam(value = "pwd", required = true) String pwd) {
  86. System.out.println("hello post");
  87. return login4Return(name, pwd);
  88. }
  89. /**
  90. * 参数为一个bean对象.spring会自动为我们关联映射
  91. * @param loginBean
  92. * @return
  93. */
  94. @RequestMapping(value = "/loginbypost1", method = { RequestMethod.POST, RequestMethod.GET })
  95. public String loginByPost1(RequestLoginBean loginBean) {
  96. if (null != loginBean) {
  97. return login4Return(loginBean.getName(), loginBean.getPwd());
  98. } else {
  99. return "error";
  100. }
  101. }
  102. /**
  103. * 请求内容是一个json串,spring会自动把他和我们的参数bean对应起来,不过要加@RequestBody注解
  104. *
  105. * @param name
  106. * @param pwd
  107. * @return
  108. */
  109. @RequestMapping(value = "/loginbypost2", method = { RequestMethod.POST, RequestMethod.GET })
  110. public String loginByPost2(@RequestBody RequestLoginBean loginBean) {
  111. if (null != loginBean) {
  112. return login4Return(loginBean.getName(), loginBean.getPwd());
  113. } else {
  114. return "error";
  115. }
  116. }
  117. /**
  118. * 对登录做出响应处理的方法
  119. *
  120. * @param name
  121. *            用户名
  122. * @param pwd
  123. *            密码
  124. * @return 返回处理结果
  125. */
  126. private String login4Return(String name, String pwd) {
  127. String result;
  128. BaseResponse response = new BaseResponse();
  129. if (name.equals("admin") && pwd.equals("admin")) {
  130. result = "hello welcome admin";
  131. response.setState(true);
  132. } else {
  133. result = "oh sorry user name or password is wrong";
  134. response.setState(false);
  135. }
  136. System.out.println("收到请求,请求结果:" + result);
  137. return new Gson().toJson(response);
  138. }
  139. }

spring boot get和post请求,以及requestbody为json串时候的处理的更多相关文章

  1. Spring Boot中扩展XML请求和响应的支持

    在Spring Boot中,我们大多时候都只提到和用到了针对HTML和JSON格式的请求与响应处理.那么对于XML格式的请求要如何快速的在Controller中包装成对象,以及如何以XML的格式返回一 ...

  2. Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理

    Spring Boot AOP之对请求的参数入参与返回结果进行拦截处理   本文链接:https://blog.csdn.net/puhaiyang/article/details/78146620 ...

  3. spring boot aop打印http请求回复日志包含请求体

    一.引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  4. spring boot中 使用http请求

    因为项目需求,需要两个系统之间进行通信,经过一番调研,决定使用http请求. 服务端没有什么好说的,本来就是使用web 页面进行访问的,所以spring boot启动后,controller层的接口就 ...

  5. Spring Boot + Vue 跨域请求问题

    使用Spring Boot + Vue 做前后端分离项目搭建,实现登录时,出现跨域请求 Access to XMLHttpRequest at 'http://localhost/open/login ...

  6. 【轮询】【ajax】【js】【spring boot】ajax超时请求:前端轮询处理超时请求解决方案 + spring boot服务设置接口超时时间的设置

    场景描述: ajax设置timeout在本机测试有效,但是在生产环境等外网环境无效的问题 1.ajax的timeout属性设置 前端请求超时事件[网络连接不稳定时候,就无效了] var data = ...

  7. spring boot @Schedule 如何定时请求任务

    spring boot 定时任务,添加两个注解即可: 1,启动类添加:@EnableScheduling 2,方法上添加注解:@Scheduled(cron = "0/5 * * * * ? ...

  8. 【Spring学习笔记-MVC-6】SpringMVC 之@RequestBody 接收Json数组对象

    作者:ssslinppp       1. 摘要 程序流程: 前台使用ajax技术,传递json字符串到后台: 后台使用Spring MVC注解@RequestBody 接受前台传递的json字符串, ...

  9. Spring Boot教程(二十五)返回JSON格式

    在上述例子中,通过@ControllerAdvice统一定义不同Exception映射到不同错误处理页面.而当我们要实现RESTful API时,返回的错误是JSON格式的数据,而不是HTML页面,这 ...

随机推荐

  1. C语言复习---判断素数

    一般 int main01() { ; scanf("%d", &a); n_sqrt = sqrt(a); ; i <= n_sqrt; i++) ) { flag ...

  2. RabbitMQ基础篇

    介绍 RabbitMQ 是一个消息中间件:它接收并转发消息.您可以把它想象为一个邮局:当您把需要寄出的邮件投递到邮箱,邮差最终会把邮件送给您的收件人.在这个比喻中,RabbitMQ 就是一个邮箱,也可 ...

  3. bzoj千题计划160:bzoj2599: [IOI2011]Race

    http://www.lydsy.com/JudgeOnline/problem.php?id=2599 点分治 mi[i] 记录边权和为i时的最少边数 先更新答案,再更新mi数组,换根时清空mi # ...

  4. Maximal Rectangle&Largest Rectangle in Histogram

    这两天在做leetcode的题目,最大矩形的题目以前遇到很多次了,一直都是用最笨的方法,扫描每个柱子,变换宽度,计算矩形面积,一直都以为就这样O(n2)的方法了,没有想到居然还有研究出了O(n)的算法 ...

  5. 兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法

    兼容firefox,ie,谷歌,阻止浏览器冒泡事件,Firefox不支持event解决方法 // 获取事件function getEvent(){ if(window.event) {return w ...

  6. 34、Collections工具类简介

    Collections工具类简介 就像数组中的Arrays工具类一样,在集合里面也有跟Arrays类似的工具类Collections package com.sutaoyu.Collections; ...

  7. 创造101:如果软件测试工程师组团出道,怎样才能站C位?!

    作者 C位出道的华华 虽然华华是一个软件测试技术宅,可以连续七七四十九天加班不重样,心里除了上班工作学习写代码就没有别的爱好了,但是各种潮流资讯啊狗血剧啊娱乐综艺啊,从来没有错过. 比如说现在大火的& ...

  8. 【多视图几何】TUM 课程 第6章 多视图重建

    课程的 YouTube 地址为:https://www.youtube.com/playlist?list=PLTBdjV_4f-EJn6udZ34tht9EVIW7lbeo4 .视频评论区可以找到课 ...

  9. Multiple HTTPS Bindings IIS 7 Using appcmd

    http://toastergremlin.com/?p=308 Sometimes when using a wildcard SSL or Unified Communications Certi ...

  10. 安卓微信、QQ自带浏览器 UXSS 漏洞

    安卓微信.QQ自带浏览器 UXSS 漏洞 注:PDF报告原文下载链接 Author: hei@knownsec.com Date: 2016-02-29 一.漏洞描述 在安卓平台上的微信及QQ自带浏览 ...