首页 > 编程语言 >Javaweb-JSON格式的应用

Javaweb-JSON格式的应用

时间:2022-09-18 22:13:14浏览次数:100  
标签:vue Javaweb data json uname JSON 格式 pwd

1 什么是json

客户端向服务器发送JSON格式的数据

JSON是一种数据格式(JSON,即JavaScript Object Notation,是js中对象的表示方法)

JSON格式表示两个学员信息的代码如下:

[{sid:"s001",age:18},{sid:"s002",age:19}]

以下是XML格式表示两个学员信息的代码如下:

  <students>
    <student sid="s001">
        <sname>jim</sname>
        <age>18</age>
    </student>
    <student sid="s002">
        <sname>tom</sname>
        <age>19</age>
    </student>
  </students>

可见JSON表达数据更简洁,更能够节约网络带宽

2 json的应用

①json的初次引入

之前在介绍 原生Ajax、Axios框架的使用 中出现过json

img

上图中服务器返回的是json格式的value

②客户端发送json格式的参数

要让客户端向服务器也发送json格式的参数,需要将之前axios中的parmas改为data

更改前:

window.onload=function(){
    var vue = new Vue({
        "el":"#div0",
        data:{
            uname:"lina",
            pwd:"ok"
        },
        methods:{
            axios01:function(){
                axios({
                    method:"POST",
                    url:"axios01.do",
                    params:{
                        uname:vue.uname,
                        pwd:vue.pwd
                    }
                })
                    .then(function (value) {
                        console.log(value);
                    })
                    .catch(function (reason) {
                        console.log(reason);
                    });
            }
        }
    });
}

更改后

window.onload=function(){
    var vue = new Vue({
        "el":"#div0",
        data:{
            uname:"lina",
            pwd:"ok"
        },
        methods:{
            axios02:function(){
                axios({
                    method:"POST",
                    url:"axios02.do",
                    data:{                    //此处改为了data:
                        uname:vue.uname,
                        pwd:vue.pwd
                    }
                })
                    .then(function (value) {
                        console.log(value);
                    })
                    .catch(function (reason) {
                        console.log(reason);
                    });
            }
        }
    });
}

服务器端获取参数的方式也要修改,不再是 request.getParameter()... 而是:

       StringBuffer stringBuffer = new StringBuffer("");
       BufferedReader bufferedReader = request.getReader();
       String str = null ;
       while((str=bufferedReader.readLine())!=null){
           stringBuffer.append(str);
       }
       str = stringBuffer.toString() ;

改好之后发送json格式的参数

③服务器端接收并转化为java对象

  • 通过Gson对象解析JSON字符串

  • 使用fromJson(json str,Class)方法将就哦啥字符串还原java对象

④服务器将数据库中的user数据响应给客户端

服务器端发送

//假设user是从数据库查询出来的,现在需要将其转化成json格式的字符串,然后响应给客户端
String userJsonStr = gson.toJson(user);
response.setCharacterEncoding("UTF-8");
//MIME-TYPE
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(userJsonStr);

MIME

HTTP协议中的MIME类型(Multipurpose Internet Mail Extensions 多用途互联网邮件扩展)

为了让用户通过浏览器和服务器端交互的过程中有更好、更丰富的体验,HTTP协议需要支持丰富的数据类型。

HTTP协议中定义的MIME类型

<mime-mapping>
    <extension>mp4</extension>
    <mime-type>video/mp4</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>doc</extension>                  //服务器端响应的是doc格式的文档
    <mime-type>application/msword</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>json</extension>                 //服务器端响应的是json格式的数据
    <mime-type>application/json</mime-type>
</mime-mapping>
<mime-mapping>
    <extension>html</extension>               //服务器端响应的是普通文本
    <mime-type>text/html</mime-type>
</mime-mapping>

使用mime就可以在浏览器中内嵌Word、MP4、json等等这些特殊用途的扩展

客户端解析

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>03.演示Axios发送异步请求给服务器端,服务器响应json格式的数据给客户端</title>
    <script language="JavaScript" src="script/vue.js"></script>
    <script language="JavaScript" src="script/axios.min.js"></script>
    <script language="JavaScript">
        window.onload=function(){
            var vue = new Vue({
                "el":"#div0",
                data:{
                    uname:"lina",
                    pwd:"ok"
                },
                methods:{
                    axios03:function(){
                        axios({
                            method:"POST",
                            url:"axios03.do",
                            data:{
                                uname:vue.uname,
                                pwd:vue.pwd
                            }
                        })
                            .then(function (value) {
                                var data = value.data;
                                // data对应的数据:
                                // {uname:"鸠摩智",pwd:"ok"}
                                vue.uname=data.uname;
                                vue.pwd=data.pwd;
​
                                //此处value中的data返回的是 js object,因此可以直接点出属性
                                
                            })
                            .catch(function (reason) {
                                console.log(reason);
                            });
                    }
                }
            });
        }
    </script>
</head>
​
</html>

点击后查看服务器端的响应

服务器响应的是json格式的数据

相应的是js对象

我们就可以直接vue.uname=data.uname; vue.pwd=data.pwd;

来获取其中的相应value,展现在页面上

<body>
    <div id="div0">
        uname:<input type="text" v-model="uname"/><br/>
        pwd:<input type="text" v-model="pwd"/><br/>
        <input type="button" @click="axios03" value="服务器响应json格式的数据给客户端"/>
    </div>
</body>

响应的是字符串

如果我们获取的是一个字符串: "{uname:"鸠摩智",pwd:"ok"}"

js语言中 也有字符串和js对象之间互转的API string JSON.stringify(object) object->string object JSON.parse(string) string->object

js string - > js object
var str = "{\"uname\":\"lina\",\"age\":20}";
var user = JSON.parse(str);
alert(typeof user);
alert(user.uname+"_"+user.age);
js object -> js string
var user = {"uname":"lina","age":99};
alert(typeof user);
var userStr = JSON.stringify(user);
alert(typeof userStr);
alert(userStr);

3 图解整个过程

标签:vue,Javaweb,data,json,uname,JSON,格式,pwd
From: https://www.cnblogs.com/fancy2022/p/16705972.html

相关文章

  • Javaweb学习笔记第八弹
    继续MyBatis学习SQL语句警告提示问题产生原因:IDEA和数据库没有建立连接,不识别表的信息解决方式:在IDEA中配置MySQL数据库连接在IDEA的Maven项目中,如果想要直接通过IDEA......
  • scanf函数格式输入,限制以及跳过某些输入
    在scanf中%3指的是为333,必须在读入时指定a的读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加%*控制符,用于跳过间的三位输入数字,选项A正确;本题答案#inclu......
  • 扩展条件格式的应用范围
    问题: 应用于某一单元格的条件格式扩展到其他单元格,假设带条件格式的单元格为E1,需要扩展至E2:E12。 方法1:格式粘贴选取E1》复制》选取E1:E12》粘贴》选择性粘贴》......
  • .mat文件批量转存为.json文件的方法
    记录下.mat文件批量转存为.json文件的方法matlab本身是没有json解析包的,因此需要加载一个jsonlab工具包,可以用git命令下载gitclonehttps://github.com/fangq/jsonlab.g......
  • 【利用Python进行edf格式的肌电处理的一些过程记录】-2022/09
    (1)获取原肌电数据,生成图片1.使用的库:mne2.肌电数据的格式:edfdefShow_Information(file):raw=read_raw_edf(file,preload=True)info=raw.info......
  • 十进制浮点数转IEEE754标准的32浮点数的二进制格式
    十进制浮点数转IEEE754标准的32浮点数的二进制格式在IEEE754标准中,float所占的32位分为符号位(S)1位、阶码(E)8位、尾数(M)23位。符号位为1、0两种,1表示正数,0表示负数。阶码这......
  • JavaWeb----thymeleaf小项目
    《相关资源以及比我写的更加详细的博客》资源:https://heavy_code_industry.gitee.io/code_heavy_industry/pro001-javaweb/lecture/博客:https://blog.csdn.net/jsdoulaou......
  • 判断图片格式的代码(判断jpg,png,gif,tiff)
    load=function(path){//varfullpath=..io.exist(path)//if(fullpath)returndll.ImageLoadW(owner.hImage,fullpath);varbuffer=..string.loadBuf......
  • 简单的 JavaScript 数字格式化方法
    简单的JavaScript数字格式化方法每个大型社交媒体网站都以与93.1K追随者、100万订阅者或2.5B浏览量相同的方式格式化他们的数字,他们这样做是因为用紧凑的数字设计......
  • 实例-rust-将数据写入json文件
    Cargo.toml[package]name="rust-example5"version="0.1.0"edition="2021"#Seemorekeysandtheirdefinitionsathttps://doc.rust-lang.org/cargo/refere......