网页前端与java后台的json数据交互

涉及技术

html+js+jquery+java+tomcat
json的java解析工具jar包(maven依赖)(这个不是一定需要的):

<!--主要使用jsonobject类,-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.28</version>
    </dependency>

1,web后台向前端发送json数据

java本身是没有json数据格式的,利用的是第三方实现的类JSONObject。其实直接向网页传送json字符串也是可以的。

JSONObject传送:

//设置字符格式
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
//创建json并向里面添加数据
JSONObject json=new JSONObject();
json.put("name","精灵公主");
json.put("age","18");
json.put("words","夜空越暗,星星越亮");
//向请求数据的网页回应数据
PrintWriter printWriter= null;
printWriter = response.getWriter();
printWriter.print(json);
printWriter.flush();
printWriter.close();

直接访问得到的是json数据。我自己的servlet类对外访问路径是/QingDataServlet。
在这里插入图片描述

html页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../jq/jquery-3.4.1.min.js"></script>

</head>
<body>

</body>
<script>
    $(document).ready(function () {
        $.getJSON("/QingDataServlet",function (datas) {
            console.log(datas);
            for (var data in datas){
                console.log(data+"="+datas[data]);
            }
        });
    });
</script>
</html>

运行调试结果:
运行结果

字符串直接传送:

其实java后台是直接传送json数据格式的字符串。所以我们只要传个json数据的字符串就可以了。比如下面的:
{“name”:“精灵公主”,“words”:“夜空越暗,星星越亮”,“age”:“18”}

        //设置字符格式
        response.setCharacterEncoding("UTF-8");
        response.setContentType("text/html;charset=UTF-8");
//向请求数据的网页回应数据
        PrintWriter printWriter= null;
        printWriter = response.getWriter();
        printWriter.print("{\"name\":\"精灵公主\",\"words\":\"夜空越暗,星星越亮\",\"age\":\"18\"}");
        printWriter.flush();
        printWriter.close();

验证得到的结果是和上面用JSONObject类得到的效果是一样的。

2,前端页面向后台传送json

html页面:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../jq/jquery-3.4.1.min.js"></script>

</head>
<body>
<button>点我发送</button>
</body>
<script>
    $(document).ready(function () {
        $("button").click(function(){
            $.post("/QingDataServlet",{
            "name":"精灵公主","words":"夜空越暗,星星越亮","age":"18"
                });
            alert("ok");
        });
    });
</script>
</html>

请求类路径/QingDataServlet

//获取所有参数,也可以使用getParameter()获取指定的值
Enumeration<String> parmNames1 = request.getParameterNames();
while (parmNames1.hasMoreElements()) {
    String name = (String) parmNames1.nextElement();
    String value = request.getParameter(name);
    System.out.println(name + "=" + value);
}

请求截图:
在这里插入图片描述

附送两张图

有助于理解request,出自于这位大哥
request的运行流程
在这里插入图片描述
抓包获取的http请求信息
在这里插入图片描述

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值