SpringBoot 前后端json数据交互

目录

一、参考文献

二、勇敢尝试

  • 前端js发送ajax请求( application/x-www-form-urlencoded

           var jsonObj = {"openid":"xxx","username":"Ed sheeran","password":"123"};
              /*
                  Jquery默认Content-Type为application/x-www-form-urlencoded类型
               */
              $.ajax({
                  type: 'POST',
                  url: "/login",
                  dataType: "json",
                  data: JSON.stringify(jsonObj),
                  success: function(data) {
                      console.log(data)
                  },
                  error: function() {
                      console.log("fucking error")
                  }
              });

  • 后端Servlet接受参数。前端报 200,后端报 返回值都是null

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(HttpServletRequest request){
          System.err.println(request.getParameter("openid"));
          System.err.println(request.getParameter("username"));
          System.err.println(request.getParameter("password"));
    }
    
  • 后端改 @RequestParam 接受参数。前端报 404,后端报 Required String parameter ‘username’ is not present

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        @RequestParam("openid") String openid){
          System.err.println(username);
          System.err.println(password);
          System.err.println(openid);
      }
  • 后端改 @RequestBody 接受参数。前端报 415,后端报 Content type ‘application/x-www-form-urlencoded;charset=UTF-8’ not supported

    Http status 415 Unsupported Media Type

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestBody Map<String,Object> map){
          System.err.println(map.get("username"));
          System.err.println(map.get("password"));
          System.err.println(map.get("openid"));
      }
  • 前端加 contentType : “application/json”。前端报 200,后端 能接受到参数

        $.ajax({
                  type: 'POST',
                  url: "/login",
                  dataType: "json",
                  data: JSON.stringify(jsonObj),
                  contentType : "application/json",
                  success: function(data) {
                      console.log(data)
                  },
                  error: function() {
                      console.log("fucking error")
                  }
              });
    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestBody Map<String,Object> map){
          System.err.println(map.get("username"));
          System.err.println(map.get("password"));
          System.err.println(map.get("openid"));
    }
    }
  • 有时候,我想在后端使用对象来获取参数。前端报 200,后端 也ok

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestBody Form form){
          System.err.println(form);
    }
    }
    public class Form {
      private String openid;
      private String username;
      private String password;
    
      public String getOpenid() {
          return openid;
      }
    
      public void setOpenid(String openid) {
          this.openid = openid;
      }
    
      public String getUsername() {
          return username;
      }
    
      public void setUsername(String username) {
          this.username = username;
      }
    
      public String getPassword() {
          return password;
      }
    
      public void setPassword(String password) {
          this.password = password;
      }
    
      @Override
      public String toString() {
          return "Form{" +
                  "openid='" + openid + '\'' +
                  ", username='" + username + '\'' +
                  ", password='" + password + '\'' +
                  '}';
      }
    }

三、最终选择交互方式

  • 前端 application/json,上传 josn字符串, 后端 使用对象 或者 Map

  • 前端代码

           var jsonObj = {"openid":"xxx","username":"Ed sheeran","password":"123"};
              /*
                  Jquery默认Content-Type为application/x-www-form-urlencoded类型
               */
              $.ajax({
                  type: 'POST',
                  url: "/login",
                  dataType: "json",
                  data: JSON.stringify(jsonObj),
                  contentType : "application/json",
                  success: function(data) {
                      console.log(data)
                  },
                  error: function() {
                      console.log("fucking error")
                  }
              });
  • 后端代码1

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestBody Form form){
          System.err.println(form);
    }
    }

  • 后端代码2

    @Controller
    public class LoginController {
      @PostMapping("/login")
      public void login(@RequestBody Map<String,Object> map){
          System.err.println(map.get("username"));
          System.err.println(map.get("password"));
          System.err.println(map.get("openid"));
    }
    }

  • 16
    点赞
  • 80
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
【资源说明】 1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,需要能看懂代码,并且热爱钻研,自行调试。 基于SpringBoot框架搭建的物联网数据采集系统服务器端(源码+项目说明).zip ## 基于SpringBoot框架搭建的物联网数据采集系统服务器端 DAQ-IoT-SSM的升级版 #### 2020-7-15 更新内容 * 1.前端页面完全重构 * 使用elements-ui重新编写所有前端页面,优化视觉感受。 * 完全抛弃JQuery,使用vue.js + axios实现前后端交互,优化交互逻辑和用户体验。 * 2.API优化 * 取消虚拟路径 * 添加部分API,如根据时间段查询数据、条件查询传感器。 * 过时原有按时间段查询异常的API。 #### 2020-05-14 更新内容 * 1.框架迁移到SpringBoot+MyBatis,相比于SSM版的项目大大减少了xml配置,仅在application.yml文件中配置了少量信息 * 2.添加Redis缓存,在以下部分提供缓存支持: * 当查询单个Gateway、Sensor、SensorClassify时使用查询缓存,从数据库查询过的数据会存入缓存,提高查询效率 * 传感器提交Data数据时使用添加缓存,不直接操作数据库,而是将Data添加到Redis中形成缓存队列,提高并发效率 * 将用户登录信息不直接存入session,而是存入Redis缓存,以实现分布式session共享 * 3.提交Data数据的异步任务支持。通过线程池实现异步地将Redis中缓存队列添加到数据库,减少数据库的写入压力。 * 4.nginx与tomcat集群支持: * 通过SpringBoot的内置Tomcat方便了Tomcat集群的部署 * 提供查看IP和端口API方便进行nginx反向代理和负载均衡的部署和测试 * 分布式session共享避免了集群环境下用户登录信息失效的问题 * 5.测试页面优化 * 模拟传感器数据提交页面支持批量数据提交 * 按时间段查询传感器异常页面不再需要输入时间戳而是通过控件输入日期 * 修复了前端页面显示时间与数据库存储时间不一致的bug ### 注意: * 前端页面仅供测试,本系统主要是为底层传感网络提供数据提交和管理的平台。 * 默认请求路径 http://localhost:8080/ 8080为SpringBoot内置Tomcat端口,可在application.yml文件中修改。 * 以下所有API除测试、用户相关的/login、/info、/exit之外,都会被登录拦截器所拦截,调用其他API需要先登录一个用户。 * 本系统除下载部分外,所有响应数据均为同样的JSON格式。 * 格式:{"status" : true/false, "message" : "description...", "data": data } * status: 表示请求是否成功。 * message: 对请求的描述,如果响应失败,描述失败原因。 * data: 请求成功时响应的数据,为Object类型,可以是任何类型的数据。data的具体json的格式可参考domain包中的实体类结构。 ### 提供API #### 0. 测试 |功能|请求uri|请求方式|请求参数| |----|------|--------|-------| |测试|/api/home|GET|无| |查看IP和端口|/api/address|GET|无| #### 1. 用户相关 |功能|请求uri|请求方式|请求参数| |----|------|--------|-------| |用户登录|/api/user/login|POST|User对象| |查看登录用户|/api/user/info|GET|无| |退出登录|/api/user/exit|GET|无| |用户注册|/api/user/regist|POST|User对象| |修改密码|/api/user/password|POST|User对象、新密码| |修改基本信息|/api/user/modify|POST|User对象| #### 2. 网关相关(restful风格) |功能|请求uri|请求方式|请求参数| |----|------|--------|-------| |添加网关|/api/g
该资源是一个关于微信小应用程序的书橱项目,使用了SSM(Spring、SpringMVC、MyBatis)框架进行开发。以下是该项目的一些主要特点和技术介绍: 技术栈:该项目采用了Java语言进行开发,并使用了SSM框架(Spring、SpringMVC、MyBatis)进行后端开发。同时,前端使用了微信小程序进行展示和交互。 功能模块: 用户管理:用户可以注册、登录、修改个人信息等。 书籍管理:用户可以添加、删除、修改书籍信息,包括书名、作者、出版社等。 分类管理:对书籍进行分类管理,方便用户查找和浏览。 借阅管理:用户可以借阅和归还书籍,系统会自动记录借阅时间和归还时间。 搜索功能:用户可以通过书名、作者等关键词进行搜索,快速找到想要的书籍。 数据存储:使用MySQL数据库进行数据存储,包括用户信息、书籍信息、借阅记录等。 安全性:采用JWT(JSON Web Token)进行用户身份验证,确保用户数据的安全性。 部署说明:提供了详细的部署说明文档,方便用户快速搭建和运行项目。 演示视频:提供了项目的演示视频,用户可以直观地了解项目的实际运行情况。 源码介绍:提供了详细的源码介绍文档,包括各个模块的功能说明、代码结构等,方便用户学习和理解项目。 LW:提供了LW(Learning With)的学习资料,帮助用户更好地掌握项目所涉及的技术和知识。 总之,这个项目是一个基于SSM框架的微信小程序书橱项目,具有丰富的功能和良好的用户体验。通过学习这个项目,用户可以掌握微信小程序开发、SSM框架以及相关技术的应用,为今后的项目开发打下坚实的基础。
这是一个基于SpringBoot和Vue的影院订票系统的源码资源包。它包含了完整的源代码,部署说明,演示视频以及源码介绍。 该系统采用了前后端分离的设计架构,后端使用SpringBoot进行开发,负责处理业务逻辑和数据存储;前端则使用Vue进行开发,负责用户界面的展示和交互。 在功能上,该系统实现了用户注册、登录、电影查询、订票、支付等基本功能。用户可以在系统中查看电影信息,选择座位,进行在线支付,完成订票操作。同时,系统还提供了订单管理、用户管理等功能,方便影院管理人员进行日常运营和管理。 在技术实现上,该系统采用了MySQL作为数据库,用于存储用户信息、电影信息、订单信息等数据SpringBoot作为后端框架,提供了RESTful API接口,与前端进行数据交互。Vue作为前端框架,通过Axios库调用后端接口,实现数据的获取和提交。 此外,该系统还考虑了安全性和性能。在安全性方面,系统采用了JWT(Json Web Token)进行用户身份验证和授权,保证了用户数据的安全。在性能方面,系统进行了合理的数据库设计和查询优化,提高了系统的响应速度和处理能力。 总的来说,这是一个功能完善,设计合理,易于部署和维护的影院订票系统。无论是对于学习SpringBoot和Vue的开发技术,还是对于实际的影院订票业务,都是一个非常好的参考和实践项目。
本资源是一个基于Spring Boot和MySQL的母婴商城系统的完整源码,适用于JAVA毕业设计或项目实践。该系统采用了当下流行的微服务架构,以Spring Boot作为后端开发框架,MySQL作为数据库管理系统,实现了一个功能完善的母婴商城系统。主要功能包括:用户模块:注册、登录、修改个人信息、查询订单等;商品模块:商品分类、商品列表、商品详情、商品搜索等;购物车模块:添加商品、修改数量、删除商品等;订单模块:下单、支付、查看订单详情、订单状态跟踪等;评论模块:对已购买的商品进行评价;管理员模块:商品管理、订单管理、用户管理等。技术特点:采用Spring Boot作为后端开发框架,简化了开发流程,提高了开发效率;使用MyBatis作为持久层框架,实现与MySQL数据库的高效交互;使用Thymeleaf作为前端模板引擎,实现前后端分离,提高页面渲染性能;采用RESTful API设计风格,方便前后端数据交互;使用JWT(JSON Web Token)实现用户身份认证和授权;使用Redis实现购物车数据的缓存,提高系统性能;使用RabbitMQ实现订单的异步处理,提高系统吞吐量。通过本资源的学习,你可以掌握以下技能:熟悉Spring Boot框架的使用;熟悉MySQL数据库的基本操作;熟悉MyBatis框架的使用;熟悉前后端分离的开发模式;熟悉RESTful API设计风格;掌握JWT的使用方法;掌握Redis和RabbitMQ的基本应用。总之,本资源提供了一个功能完善、技术先进的母婴商城系统,可以帮助你快速完成JAVA毕业设计,提升你的项目实战能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值