后端接收数据测试解析

串口收发数据测试、监视等 串口COM1、COM2、COM3发送接收数据测试,验证数据格式等监视监测数据 立即下载

前言:
在项目中总是看到使用@PostMapping来实现查询的方法,并不是因为不知道要使用@GetMapping,是由于传递参数的原因,使用@PostMapping可以不用管理参数的传递,比较方便,相反,使用@GetMapping就总是会接收不到参数,导致空指针。下面就探究一下这两个注解接收参数。
这里并不是探究内部它是如何创建对象,赋值,只是单纯到的实验,只关注结果。

先上测试代码

@RestController
@RequestMapping("test")
public class ReceiveController {

    @GetMapping("test1")
    public void test1(Student student){
        System.out.println("进入test1");
        System.out.println(student.getAge());
        System.out.println(student.getName());
        System.out.println(student.getTeacher());
    }

    @GetMapping("test2")
    public void test2(@RequestBody Student student){
        System.out.println("进入test2");
        System.out.println(student.getAge());
        System.out.println(student.getName());
        System.out.println(student.getTeacher());
    }

    @PostMapping("test3")
    public void test3(Student student){
        System.out.println("进入test3");
        System.out.println(student.getAge());
        System.out.println(student.getName());
        System.out.println(student.getTeacher());
    }

    @PostMapping("test4")
    public void test4(@RequestBody Student student){
        System.out.println("进入test4");
        System.out.println(student.getAge());
        System.out.println(student.getName());
        System.out.println(student.getTeacher());
    }


}

//实体类
@Data
public class Student {
    private String name;
    private Integer age;
    private Teacher teacher;
}

@Data
public class Teacher {
    private String name;
    private Integer age;
}


所有的测试都是使用Postman进行

测试test1

方式一:通过在地址后面拼接参数
http://localhost:8585/test/test1?name=小明&age=15&teacher.age=52&teacher.name=强哥
结果:成功得到所有的数据,注意使用teacher,name才能给里面内嵌的对象赋值

方式二:
请求体:在get方式中使用请求体发送数据显然很奇怪,按理说get请求方式是没有请求体的,这里使用的PostMan起码填写是可行的
{
    "name":"小明",
    "age":15,
    "teacher.age":52,
    "teacher.age":"强哥"
}
结果: 结果就都是空,一个都接收不到,这很显然,或许是请求体根本就没有传递过去,因为get方式就没有请求体

测试test2

方式一:通过在地址后面拼接参数
http://localhost:8585/test/test2?name=小明&age=15&teacher.age=52&teacher.name=强哥
结果:方法体都没进去,直接报400,Bad Request,get不能和@requestBody写到一起?

方式二:
请求体:
{
    "name":"小明",
    "age":15,
    "teacher.age":52,
    "teacher.age":"强哥"
}
结果: 奇怪的东西来了,小明和15接收到了,后面的teacher没有接收到,get还能接收请求体里面的东西?get方式有请求体?postMan中的Body不是请求体?估计是后者,这里可以研究一下postman的原理。

方式三:
请求体二:
{
    "name":"小明",
    "age":15,
    "teacher":{
        "name":"强哥",
        "age":"52"
    }
}
结果:全部接收到了,我陷入了沉思~~~~

测试test3

方式一:通过在地址后面拼接参数
http://localhost:8585/test/test3?name=小明&age=15&teacher.age=52&teacher.name=强哥
结果:全部接收到了

方式二:
请求体:
{
    "name":"小明",
    "age":15,
    "teacher.age":52,
    "teacher.age":"强哥"
}
结果:一个都没有接收到

方式三:
请求体二:
{
    "name":"小明",
    "age":15,
    "teacher":{
        "name":"强哥",
        "age":"52"
    }
}
结果:同样接收不到
	

测试test4

方式一:通过在地址后面拼接参数
http://localhost:8585/test/test4?name=小明&age=15&teacher.age=52&teacher.name=强哥
结果:400 错误 Bad Request

方式二:
请求体:
{
    "name":"小明",
    "age":15,
    "teacher.age":52,
    "teacher.age":"强哥"
}
结果:同测试二

方式三:
请求体二:
{
    "name":"小明",
    "age":15,
    "teacher":{
        "name":"强哥",
        "age":"52"
    }
}
结果:同测试二
测试完毕

在项目中,发现根本没有写@RequestBody,这又陷入了迷茫,其实是因为重写了WebMvcConfigurer中的方法,具体的可以自己查阅。好吧,是我不会~~~~

网络数据接收的测试文件 一个简单的网络数据接收的文件。没事写着玩,主要实现PC接收ARM11通过网络接口发送上来的数据。 立即下载

相关推荐

一个可以用来测试后端返回数据的java工具

NULL 博文链接:https://chemzqm.iteye.com/blog/662057

一篇文章教你自动化测试如何解析excel文件?

自动化测试中我们存放数据无非是使用文件或者数据库,那么文件可以是csv,xlsx,xml,甚至是txt文件,通常excel文件往往是我们的首选,无论是编写测试用例还是存放测试数据,excel都是很方便的。那么今天我们就把不同模块处理excel文件的方法做个总结,直接做封装,方便我们以后直接使用,增加工作效率。使用了3种方法,4个库 xlrd,openpyxl,xlwt,pandas 操作excel文件,个人感觉还是使用openpyxl比较适合在自动化中使用,当然不同人有不同选择,用哪个区别也不是很大。

2301_78276982的博客 256

深入解析UE5内存分析:从Memreport到Unreal Insights

本文深入解析了UE5内存分析的两大核心工具:Memreport与Unreal Insights。Memreport提供详细的内存快照,帮助定位UObject等资源的内存占用;而Unreal Insights则能进行实时监控与历史回溯,精准追踪内存泄漏。掌握这两款工具是优化UE5项目性能、确保大型项目稳定运行的必备技能。

lg888的博客 1005

如何做测试后的数据分析

转载自IT168 [ http://www.it168.com/ ] 本文链接:http://tech.it168.com/a2009/0319/269/000000269037.shtml 作者:51Testing软件测试网   2009-03-19    文本Tag: 软件测试 数据分析   【IT168 技术文档】   问题描述:在软件测试完成后,采用工具(T

qinglu000的专栏 2224

Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决

介绍 主要解决如下问题 网络图标消失 常用方法配置中出现的网络图标变成灰色没有办法打开 打开网络和Internet闪退 错误提示`网络发现已关闭。网络计算机和设备不可见。请启动网络和共享中心的网络发现。 连不上网,诊断结果为 依赖服务或组无法启动 这个问题大概率通过重装系统不能解决,请大家谨慎测试之后最后选择重装这个路线。 方法1:这一步一定要做(卸载三方软件) 把360安全卫士,软件管家这些东西都卸载掉。 我的问题一开始就是这个软件引起的,可能他检测到我还给台式机配了无线网卡,然后就把有线网络的一些

呆呆象呆呆的博客 3万+

卫星测试科普(三):卫星载荷的核心测试设备探秘

总的说来,卫星芯片与元器件,部组件与单机,整机与子系统,系统与整星的设计、定型、制造、验证、总装、发射、在轨等环节都离不开各种测试场景,对于这些卫星测试场景而言,“射频三大件”与高速数字示波器是构成强大测试系统的基础。卫星通信信号生成:覆盖Ka、Q等波段,具备扫频、脉冲、数字调制、噪声信号、雷达信号、数据链信号、OFDM 等多种信号库,用于测试和验证卫星电子设备的电气性能、频率响应、抗干扰能力等。卫星的通信需要高效、快速地传输大量数据,高速信号的质量至关重要,如果卫星信号不佳,卫星就会出现故障或者隐患。

spwbjss的博客 2317

性能测试的结果如何解读和分析?

95%响应时间是指系统处理请求所需时间中,排除最慢5%的请求后的平均时间。较长的最大响应时间可能意味着系统在某些情况下的性能较差,用户可能会遇到较长的等待时间。:响应时间是指系统处理请求所需的时间,通常以平均响应时间、最大响应时间、95%响应时间等指标来衡量。:在系统开发的早期阶段,可以进行一些试验和评估,以了解系统在不同负载下的性能表现。性能测试的结果需要进行细致的解读和分析,以便找出系统的瓶颈和问题,并提出改进建议。在测试过程中,记录每个请求的响应时间,并计算平均响应时间。

hlsxjh的博客 1021

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

(转)知乎的提问--服务器端测试主要包含什么?

转自:https://www.zhihu.com/question/29164912 非常棒的回答,可以参考参考~ 钱蓓蕾 ,网易测试总监 6 人赞同 这可是一个很大的话题,呵呵。 一般来说,服务端测试有两种:一种是直接对WEB或者APP的服务端进行测试;另一种是对更后端的数据库、缓存系统、中间件、文件系统等进行测试。 一、先来说第一种吧:直接对WEB或者APP的服务端进行测试。 一般

Cloud_Huan的专栏 4792

MediaPipe实战:从零构建人脸关键点检测应用

本文详细介绍了如何使用Google的MediaPipe框架从零构建一个实时人脸关键点检测应用。文章深入剖析了MediaPipe的三段式检测流水线,提供了Android平台的完整实战教程,包括环境配置、模型加载、摄像头集成、关键点绘制以及性能调优指南,帮助开发者快速实现高效、跨平台的人脸AR特效与交互功能。

weixin_29100927的博客 339

APM 飞行模式切换--源码详解

APM飞控中有很多种方式可以改变飞行模式。其中最常见的为遥控器切换和地面站切换两种方式。 下面以遥控器切换为例详解飞行模式切换逻辑。 APM遥控器切换飞行模式的源代码在RC_Channel.cpp文件中的RC_Channel_Copter::do_aux_function_change_mode()函数中。 const bool success = copter.set_mode()调用Copter::set_mode()函数,在set_mode()函数中调用mode_fro...

qq_30623591的博客 2439

关于使用postman

Postman是一个全面的API平台,简化了API生命周期的每一步,并简化了协作以获得更好的API。使用它的REST客户端,您可以轻松地发送请求、检查响应和调试REST API。我们在Java程序开发的时候,前后端分离,此时我们需要解析响应时,我们可以不需要编写简单web端,而是利用postman来解析。本人才疏学浅,如有错误请大牛提出,欢迎大家讨论。1,我们可以手动利用getParameter。2也可以利用服务端输入接受数据。

2201_75305432的博客 508

BLE蓝牙胎压监测

胎压监测系统新技术

qq_41851841的博客 1251

前端json内容较大,后端接收到数据为null的解决方案

前端json内容较大,后端接收到数据为null的解决方案

hpp001的专栏 785

【嵌入式DIY实例-ESP32篇】-智能花园助手

本文介绍了一个基于ESP32的智能花园监控系统。系统使用ESP-EYE摄像头开发板,集成了土壤湿度传感器、DHT22温湿度传感器和电磁阀等模块,实现植物生长环境监测与自动灌溉功能。硬件部分详细说明了各传感器的接线方式,软件部分展示了如何通过Firebase实现数据存储和远程监控。系统可实时采集土壤湿度、空气温湿度等数据,并通过摄像头监控植物状态,当检测到环境参数异常时,可自动控制水泵进行灌溉,为植物提供最佳生长环境。

视觉与物联智能 263

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

springboot-postman测试接口正常,但基于vue的前端表单post提交到后端,后端接收不到数据

分析问题 postman接口测试正常,说明服务端正常启动,能够将数据传入后端进行处理后返回token。 在前端的post表单提交的话,虽然能够返回值,但是是以未传入数据的情况返回的。 解决过程 我分析是前端表单提交出错,因为postman能够正常提交数据。但是在网页发送请求后的请求体上面核对,数据的名称和value值都是正确的,所以数据正常发送后端。 所以大致确定是后端接收数据端问题。 接收数据出错,就可以定位在controller中出错。 这个POST接收方法是用bean接收,在接收形参前面没有加

qq_42913378的博客 5055

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

springboot与axios交互

问题描述 axios 表单提交,springBoot 无法接受到数据,但使用swagger测试,可以。 原因 1、axios的表单提交 ,content-type 默认为 application/json;charset=UTF-8 2、提交数据会附加在payload(以JSON形式)。 3、@ModelAttribute 可以接受表单的数据,但是content-type的类型需要为application/x-www-form。@RequestBody 可以接受表单数据,但是content-type类型需要

qh870754310的博客 1718

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

java后端为什么接受不到前端发送的数据

首先我们说一下前后端发送和接收数据的一些方法 前端默认给后端发送数据的时候是字符串格式,后端默认接收也是字符串格式,这只是默认的方式, 当然这个时候后台也可以发送JSON数据给到前台,只要前台用js解析了JSON字符串就可以使用JSON发过来的数据. 当然前台也可以发送json给后台,这个时候就需要后台的方法参数可以接收JSON数据,这个时候,需要在参数前面添加一个@ResponseBody后台就...

水镜先生的博客 1万+

【SpringMVC】快速体验 SpringMVC接收数据 第一期

SpringMVC 官网 文档面向表述成controller的框架//调用业务即可注解效果等同于在 XML 配置中,可以使用元素和以及给这两个都加入到IOC容器和添加上了json转换器。

Orion 1145

SpringMVC接收数据和响应数据

SpringMVC接收数据和响应数据详解

qq_40818172的博客 793

微信小程序向java后端传递数据,后端能接收到但是前端报404

今天在测试微信小程序和springboot交互的时候出现了一个小问题,话不多说先来看问题: 从报错信息可以看出前端向后端传递数据,后端接收到了,但是前端却报了404的错误,这是为什么呢? 于是我百度了一下,发现我犯了一个很低级的错误,先来看我之前报错的代码: 这是我改完之后的代码: 可以发现加了一个@ResponseBody注释就好了,此处贴上@ResponseBody注释的作用: (作用转自:https://blog.youkuaiyun.com/originations/article/details/89

Wangxihe0124的博客 1285

Network成功接收数据但与控制台打印不一致

Network成功接收数据但与控制台打印不一致

yoyo_lover的博客 738

java接收端怎么收不到_java后端为什么接受不到前端发送的数据

首先我们说一下前后端发送和接收数据的一些方法前端默认给后端发送数据的时候是字符串格式,后端默认接收也是字符串格式,这只是默认的方式,后台可以发送JSON数据给到前台,只要前台用js解析了JSON字符串就可以使用JSON发过来的数据.当然前台也可以发送json给后台,这个时候就需要后台的方法参数可以接收JSON数据,这个时候,需要在参数前面添加一个@ResponseBody后台就可以这里简单介绍一下...

weixin_39900608的博客 1691

了解前后端分离

作为一个测试我只用第三方的眼光来看前后端分离,谈谈分离与不分离对测试的影响与见解 什么是前后端分离,非前后端分离   所谓非前后端分离 : 浏览器请求----http请求--->nginx服务器(请求处理,分发)---->服务器(静态资源,处理所有业务代码逻辑)---视图解析(模板渲染)--->浏览器(返回页面)   所谓前后端分离 : 浏览器请求----http请...

weixin_30892763的博客 174

深入解析SpringBoot后端三层架构及其代码角色

不同环境下的配置文件,例如:application-prod.properties(生产环境)、application-dev.properties(开发和测试环境),用来区分不同的配置。在SpringBoot项目中,常见的后端三层架构包括控制层(Controller)、服务层(Service)和持久化层(Dao、Repository、Mapper)。除了三层架构对应的包和类,后端代码还包括其他重要部分,如全局变量、项目设置类、基础信息类、实体类、数据传输类、工具类和异常处理类。

2401_83358720的博客 1495
上一篇: 持久化spring-redis-seeeion,避免开发时的重复登录
下一篇: 奇怪的知识--日期解析
diddied
博客等级 码龄7年 0粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值