‘壹’ 如何获取前端传过来的json对象
获取前端传过来的json对象
代码如下
public JSONObject getRequestContent(HttpServletRequest req) {
JSONObject data = null;
try {
InputStream is = req.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is, "utf-8"));
String line = null;
StringBuffer content = new StringBuffer();
while ((line = br.readLine()) != null) {
System.out.println(line);
content.append(line);
System.out.println(content);
}
String reqStr = content.toString().trim();
if (StringUtils.isEmpty(reqStr)) {
return new JSONObject();
}
if (reqStr.contains("=")) {
reqStr = reqStr.replaceAll("=", ":");
}
if (!reqStr.startsWith("{")) {
reqStr = "{" + reqStr;
}
if (!reqStr.endsWith("}")) {
reqStr = reqStr + "}";
}
data = JSONObject.fromObject(reqStr);
} catch (Exception e) {
e.printStackTrace();
return new JSONObject();
}
return data;
}
‘贰’ 【JSON】JSON在前端和后端传递
后端:我们假定使用的是java语言
前端:毫无疑问是js
java语言:是一种强类型的语言,必须定义类型,然后生成实例;而js却不是,虽然它也是面向对象的,但是它并没有先定义类这一种概念(但是js也有类型),它是基于原型的一种模式,和java完全不同。很显然,二者的原理,机制,语法并不能兼容。二者产生的对象并不能被对方解读。再来看网络传输,通常就是http/tcp协议喽,使用的其实是请求-响应,再说白了即使字符串,不论后台传来的是什么类型的数据,也不论前台传回的什么类型的数据,网络层统统当作字符串处理,它也没有办法来解析类型啊!说到这里,前后台传数据也就只能用字符串了,那也就意味着它们各自都要完成一个转换过程,把要发送的转换成字符串,把要收到的字符串解析成自己的对象。因为传输的字符串会涉及前后台双方的解析和处理,所以双方都必须认识或者知道字符串该怎么转,也就是说,最好能有一种通用的规则来编辑,转换字符串,这个标准或者协议就是JSON,JSON就是用来交换数据的,是一种string,一种独立于平台的数据格式。
这样一来,前台就需要把自己的数据类型转成JSON,然后发给后台,后台在用JSON来解析数据,转换成自己的类型。后台传前台一样。那么,怎么把自己的数据转成JSON呢?
`JSON`对象可以通过JavaScript存取属性!JSON对象封装成JSON字符串经常用于前后台传输数据!
如果在前端使用,那么JSON对象可以通过 对象.属性名 来调用,如果是json字符串,那么只是字符串了!
在数据传输过程中,JSON是以文本、即字符串的形式传递的,而JavaScript操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键。
JSON字符串:var str = '{ name: 'xmt', sex: 'woman' }';
JSON对象: var str = { name: 'xmt', sex: 'woman' };
JSON字符串转化为JSON对象:var obj = JSON.parse(str) ;
JSON对象转化为JSON字符串:var str = JSON.stringify(obj);
‘叁’ 如何拿到前端传过来的json对象
将数据以json格式传给前端:
function generateDtb() {
//写入
var txtName = document.getElementById("txtName").value;
//创建数组
var dtb = new Array();
//通过循环把数据写入到数组并返回
for (var i = 0; i < firstGroup.length; i++) {
var row = new Object();
row.Name = txtName;
row.fullMoney = firstGroup[i].value;
row.discount = secondGroup[i].value;
dtb.push(row);
}
return dtb;
}
把数组转换成json串传入到后台:
$(function () {
//点击botton1
$("#lbtnOK").click(function () {
var url = "DiscountManger.aspx?ajax=1";
var dtb = generateDtb();
// var strName = document.getElementById("txtName").value;
if (dtb == null)
{ }
else {
//序列化对象
var postdata = JSON.stringify(dtb);
//异步请求
$.post(url, { json: postdata }, function (json) {
if (json) {
jBox.tip("添加成功!", "提示");
location.reload();
}
else {
jBox.tip("添加失败!", "提示");
location.reload();
}
}, "json")
}
});
});
在后台的操作:
首先判断是否需要传输数据
if (!IsPostBack)
{
//判断是否异步请求
if (Request.QueryString["ajax"] == "1")
{
ProcessRequest();
}
在这里进行对数据的处理:
///
/// 处理异步请求
///
private void ProcessRequest()
{
//存入要填写的策略
ArrayList arrDiscount = new ArrayList();
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
if (json == null)
{
return;
}
else
{
DataTable newdtb = Json2Dtb(json);
for (int i = 0; i < newdtb.Rows.Count; i++)
{
Entity.StrategyDiscount enStrategyDiscount = new Entity.StrategyDiscount();
//打折方案名
enStrategyDiscount.name = newdtb.Rows[i]["Name"].ToString();
//商店ID
enStrategyDiscount.shopId = long.Parse(LoginInfo.ShopID);
enStrategyDiscount.fullMoney = Convert.ToDecimal(newdtb.Rows[i]["fullMoney"].ToString());
enStrategyDiscount.discount = Convert.ToDecimal(newdtb.Rows[i]["discount"].ToString());
//写入数据到数组
arrDiscount.Add(enStrategyDiscount);
}
//写入数据到数据库
IStrategyBLL strategy = new StrategyBLL();
if (strategy.AddStrategyDiscount(arrDiscount))
{
Response.Write("true");
Response.End();
}
else
{
Response.Write("false");
Response.End();
}
}
这里,我们需要把json转换成datatable
///
/// Json转DataTable
///
///
///
private DataTable Json2Dtb(string json)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = jss.Deserialize(json);
DataTable dtb = new DataTable();
if (dic.Count > 0)
{
foreach (Dictionary drow in dic)
{
if (dtb.Columns.Count == 0)
{
foreach (string key in drow.Keys)
{
dtb.Columns.Add(key, drow[key].GetType());
}
}
DataRow row = dtb.NewRow();
foreach (string key in drow.Keys)
{
row[key] = drow[key];
}
dtb.Rows.Add(row);
}
}
return dtb;
}
这样,就可以把数据无刷新的写入到数据库。
当然,如果我们有一个从数据库读取的datatable,如果通过json显示在前台呢。
首先,我们需要把datatable转换为json数据
///
/// DataTable转Json
///
///
///
private string Dtb2Json(DataTable dtb)
{
JavaScriptSerializer jss = new JavaScriptSerializer();
ArrayList dic = new ArrayList();
foreach (DataRow row in dtb.Rows)
{
Dictionary drow = new Dictionary();
foreach (DataColumn col in dtb.Columns)
{
drow.Add(col.ColumnName, row[col.ColumnName]);
}
dic.Add(drow);
}
return jss.Serialize(dic);
}
然后写回到前台
///
/// 处理异步请求
///
private void ProcessRequest()
{
Response.ContentType = "text/html";
string json = Request.Form["json"];
//反序列化DataTable
DataTable newdtb = Json2Dtb(json);
//序列化DataTable为JSON
string back = Dtb2Json(newdtb);
Response.Write(back);
Response.End();
}
在前台接受显示:
$(function() {
//点击botton1
$("#botton1").click(function() {
createTable(json);
});
});
//显示Json中的数据
function createTable(json) {
var table = $("");
for (var i = 0; i < json.length; i++) {
o1 = json[i];
var row = $("");
for (key in o1) {
var td = $("");
td.text(o1[key].toString());
td.appendTo(row);
}
row.appendTo(table);
}
table.appendTo($("#back"));
}
‘肆’ 前端图片上传给后端还需要给后端字段吗
【聚焦前端实战】后端让我把图片文件和字段一起上传了...
2022年11月21日但是如果要把字段和图片文件一起上传那就不支持了,当然也不能像普通的字段上传一样使用JSON,这个时候就要掏出我们的FormData格式了!
CSDN编程社区
大家还在搜
js将文件转为二进制流
vue选择文件夹获取绝对路径
后端响应图片url给前端
前端上传文件到服务器
formdata和json区别
vue上传图片到后端
前端将二进制流转换成图片
通过url访问服务器上的图片
前端怎么把图片传到后端
前端上传图片到数据库
前端适配移动端
js文件转二进制
vue3上传图片
前端图片上传后端服务器
前端传图片给后端
java后端如何传图片给前端
前端上传图片到后端vue
django返回图片给前端
java后端接收前端传来的图片
js给一个对象添加属性
js引入图片
网页堆栈溢出怎么解决
前端上传图片到后端
前端把图片传给后端
图片上传服务器并返回url
前端浏览器适配方案
前端上传图片到后端优化
前后端图片传输
url统一资源定位符
前端上传图片
前端如何上传图片在返给后端 - 糖是苦滴的博客 - CSDN博客
2022年8月9日on-success:后面跟一个方法,通过这个方法我们可以获取到后端返还给我们的url,这个时候我们需要把url通过表单提交给后端,这个时候上传就成功完成了。
CSDN编程社区
前端如何将图片传到后端原生js(nodejs后端保存代码请...
2022年6月21日后端将照片重新命名,就保存到了后端,不需要再传递照片名,后端接收到req.files上面有这个图片原来的名字。
CSDN编程社区
前端上传图片到后端服务器 - RainCat - zZ的博客 - CSDN博客
2021年9月4日JAVA后端 ---这里可以使用MultipartFile直接接收文件信息,也可以使用HttpServletRequest先接收 -...
CSDN编程社区
大家还在搜
前端向后端传输数据的方法有哪些
js给一个对象添加属性
前端图片API
前端上传图片的逻辑
前端上传图片的时机
前后端图片传输
前端上传图片到数据库
前端适配移动端
前端图片上传给后端还需要给后端字段吗 - 资深答主答疑 - 网络问一问
在线
2240位电子数码答主在线答
已服务超1.5亿人5分钟内回复
Hi,为您实时解答电子数码类软硬件等问题,与数码行家、发烧友1对1在线沟通
前端图片上传给后端还需要给后端字段吗
马上提问
vue显示后端传来的图片
116人正在咨询
前端上传图片到服务器
117人正在咨询
做前端好还是后端好
121人正在咨询
vue显示后端传来的图片
116人正在咨询
网络问一问
关于图片上传的问题(后端+前端) - 龙小超的博客 - CSDN博客 - 后端...
2022年10月28日这个方法可以让你接受到从前端接受到的图片,为post传值 前端部分(使用了element-ui的图片上传) <el-image :src="'http://localhost:3000/...
CSDN编程社区
图片上传流程&前端上传文件&后端保存文件&并返回图片...
2022年7月26日比如在用户界面,用户选择本地的一张照片,前端把照片传到后端,后端怎么把照片保存到服务器,然后返回...
CSDN编程社区
...思路总结 - 琹箐的博客 - CSDN博客 - 前端上传图片到后端
2022年4月28日注:此处只提供前端向后端传图片思路的大致框架,不能正常运行。转图片的代码未提供,还需整理。 <template> <!--
CSDN编程社区
前端上传图片到后端 - 小饼干 - mum的博客 - CSDN博客 - 前段上传j...
2017年7月25日方法一、前端通过控件传给后端的是经过base64编码的字符串,后端拿到这个字符串后再经过base64解码,把解码后的图片存到服务器的某个位置,然后数...
CSDN编程社区
大家还在搜
前端将图片放在后端
前端把图片传给后端
图片上传前端链接
如何传图片给后端
前端浏览器适配方案
js文件转二进制
图片前后端怎么传输
图片上传服务器并返回url
vue前端上传文件给后端的两种方式 - 觉非逸的博客 - CSDN博客 - v...
2022年5月27日multiple="true" :before-upload="beforeUpload" :customRequest="selfUpload" accept=".png,.jpg" > 上传图片 1 2 3 4 5 6 7 ...
CSDN编程社区
前端上传图片(文件)到后端 - 观棋不语的我的博客 - CSDN博客...
2019年11月23日然后取出文件数组的第一个文件就是你想要上传的文件了, 将其赋值到Vue结构里面, 函数就可以拿来用了。 update:function(){if(!checkEmpty(thi...
CSDN编程社区
前端提交对象给后端:不使用前端技术也可以 - 知乎
2020年12月14日1:前端提交字段数据(可以是from,也可以是get请求,只要能将字段数据发送到后端即可)。
知乎
...彩虹下的布迷的博客 - CSDN博客 - 前端上传图片到后端vue
2022年6月7日前端传图片给后端的方式,是通过bsae64传输,然后后端把接收到的转化为字节流在把图片展示出来 后端传前端直接传输了字节流 Base64是网络上最常...
CSDN编程社区
vue+elementui:前端文件上传与后端文 - 唐代王维写代码...
2022年8月12日vue前端上传文件给后端的两种方式 7303阅读·0评论·0点赞2022年5月27日 使用element-ui中的Upload 上传向后端传输图片 184阅读·0评论·0点...
CSDN编程社区
大家还在搜
前端向后端传输数据的方法有哪些
java后端怎么写接口给前端
web前端开发环境配置
gitee不配置公钥可以上传吗
后端传递图片至前端
vue上传图片的代码
后端怎么给前端图片
前后端获取图片
【前端上传文件,后端保存】 - sgmwgntw的博客 - CSDN博客 - 前端...
2022年8月25日一、前端的要求 1.采用post方式提交数据 2.采用multipart格式上传文件 3.使用input的file控制上传 例: <inputname="myFile"type="file"/> ...
CSDN编程社区
js前端上传图片识一张一张上传要合成一个整体字符串传给...
2022年2月10日js前端上传图片整合一个字符串拼接传给后端 上传了之后是这样的 原始的: 解决方案: 1、...
博客园
前端将文件/图片传给后端 - 灰信网(软件开发博客聚合)
前端将文件/图片传给后端,灰信网,软件开发博客聚合,程序员专属的优秀博客文章阅读平台。
www.freesion.com
【Web前端问题】前端上传图片该如何传数据给后端,如果...
2021年4月30日除了uploadFiles外还要传递图片key等数据给后端,用上述input选择图片后,传递数据会把图片路径还是图片...
www.h5w3.com
大家还在搜
如何传图片给后端
前端传输图片到后端
前端传文件给后端
图片前后端怎么传输
Java实现文件上传
图片是传到后端还是前端
前端如何传图片给后端
vue3实现图片上传
...图片并上传,前端一步到位,无需用到后端 - 子慕大诗人...
2015年8月24日本质还是需要先上传到后台,最后还是后端剪裁,和之前的方式一样,只是用了canvas而已。 自己实现前端剪裁一步到位: 后来我就想了想canvas能存储ba...
博客园
前端怎么传图片给后台(java)? - 网络知道
2个回答回答时间:2018年2月23日
最佳回答:你可以现在前台控制台打印一下base64的流,看看是否获取图片成功。如果成功再去后台看看获取的文件信息,haerd中是否有数据。然后就...
‘伍’ 关于websocket发送图片
发送图片有两种方法:1.json传送,2.base64传送
json传送:
base64传送
这两种方法都可以传送图片,那么有什么区别呢?通俗来说,json是一种比较“败家”的行为,传json开销比较大,因为在嵌入式开发中,如果硬件资源比较有限,那么就容易出问题,相对比较来说,传送base64相对比较节约。但是json带来的开销也是有好处的,因为它可以传的东西太多了,比如json的key-value对用来传数组就很方便,(这个可以去看我的另一篇文章 https://www.jianshu.com/p/772a49948792 ,里面有json格式传送数组)。
在嵌入式开发中,json可以使用在云端到前端中,但是在云端到边缘端中还是能省就省,如果有比json更节约资源的方式,那么还是第二考虑使用json的。
以上是我实际经验,如果有什么问题,欢迎联系我。