Json和Ajax

前后端分离思想

 *      1.前后端分离思想:

 *          在我们以前学习开发的过程中,服务器渲染jsp页面,当一个项目,有很多的并发量的时候,服务器就会花费大量的资源来渲染前端页面,造成

 *      大量的资源浪费 -> 前后端不分离

 *

 *      前后端不分离:指的是使用服务器来渲染前端页面

 *      前后端分离:指的是使用浏览器来渲染前端页面

 *

 *              服务器端渲染:以jsp为例 -> 使用服务器来生成整个html页面中的内容,将内容组织好以后交给浏览器进行显示

 *              客户端渲染: 前端拿到html页面和js等文件后,生成一颗DOM树,再从服务器端拿到想要显示的数据,通过DOM操作显示在页面上

 *

 *              服务器端渲染的优缺点:

 *                  优点:1.对客户机友好,浏览器端显示的速度会快一点 2.便于SEO进行收录(即搜索引擎)

 *                  缺点:1.服务器压力大,资源浪费多 2.后端工程师任务重(后端工程师又要写接口,又要写页面) 3.不利于团队协作开发 4.开发逻辑混乱

 *              客户端渲染的优缺点:

 *                  缺点:1.不利于SEO收录 2.对客户端硬件配置要求高

 *                  优点:1.便于团队开发 2.代码逻辑清晰 3.服务器压力小,可以做高并发 4.前后端耦合关系低(高内聚,低耦合)

 *

 *       2.前后端分离怎么实现?

 *          前端提供页面,后端提供数据,前端和后端通过一种约定好的数据格式进行数据交换(现在最常见的数据交换格式叫JSON)

 *          ps: 不是只能用json,只要能约定好一种数据交换格式,都可以用来做数据交互

 *

 *          举例:

 *          JSON->User(轻量化):{

 *              username:zhangsan,

 *              password:xxxxx,

 *              salt:xxxx

 *          }

 *

 *          xml->User(重量化) :

 *          <properties name="username" value="zhangsan"></>

 *          <properties name="password" value="xxxx"></>

 *          <properties name="salt" value="xxxx"></>

 *

 *       3.前后端分离的程度:

 *          1.代码分离(最简单的前后端分离): 说白了前端写前端代码,后端写后端代码 ->

 *          举例: 在tomcat中 servlet提供数据 html通过ajax获得servlet提供的数据,通过DOM显示在页面中,前端页面还是用后端的服务器来保存的

 *          2.部署分离:把前端页面部署到前端服务器上,后端服务器只有后端的代码,通过代理服务器进行连接

 *          3.职责分离:前端工程师去写前端的服务器,写前端页面,将前端页面部署到前端服务器上,后端工程师写后端服务器,提供数据给前端服务器的页面

 *

 *      4.前端后分离以后:

 *          后端工程师在工作中注意的事件:

 *              1.高并发,高可用,高性能

 *              2.安全性

 *              3.业务逻辑

一、JSON:json是一种轻量级的,用于数据交换的语言

1、格式:

JSON的格式:

 *          {

 *              key01:value01,

 *              key02:value02,

 *              ....

 *              key n : value n

 *          }

二、AJAX

 什么叫AJAX:异步javascript和xml -> 是一门技术,有很多的实现方法,通过原生的js可以做ajax,通过jquery可以做,通过其他方法都可以实现ajax
        本质上就是可以通过js在网页不刷新的情况下发送http请求

        通过jquery来发送ajax:
            $.ajax({
                url:"" ->请求的路径
                type:"" ->请求的方式
                contentType:"" -> 请求的文件类型
                asyn:"" ->设置ajax是异步还是同步的,如果设置为false表示同步,在ajax请求没有处理完之前页面会卡住不动
                data:"", ->向后端发送的数据
                dataType:"" -> 向后端发送的数据类型
                success:function (data){
                    //当请求成功的时候,调用这个方法,这个方法的data参数是后端向前端响应的数据
                ],
                error:function(e){
                    //当请求失败的时候,调用这个方法,这个方法的参数是错误信息
                }
            })
    

跟js中的对象语法基本一致,一个大括号内表示的是一个对象

 *

 *      可以将json文件与java bean互相转换,一个java bean对象 就是一个json对象 {},一个List<java bean> -> [{},{},{}]

 *

 *      如何将一个java对象转化成json:

 *          使用fastJson库

 *          1.将java对象转化为json -> JSONObject jsonobejct = JSONObject.toJson(object)

 *          2.将arraylist转化为json -> JSONArryar jsonarrary = JSONArray.toJson(list<>)

 *

public class JSON01 {
    public static void main(String[] args) {
        List<User> users = new ArrayList<>();
        User user = new User();
        user.setUsername("zhangsan");
        user.setPassword("123456");

        User user1 = new User();
        user1.setUsername("lisi");
        user1.setPassword("12321451241252");

        users.add(user);
        users.add(user1);


        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(user);
        JSONArray jsonArray = (JSONArray) JSONArray.toJSON(users);
        System.out.println(jsonObject);
        System.out.println(jsonArray);
    }
}

 *      如果将json字符串转化为js对象:

 *          1.使用jquery的$.parseJson()来进行转换

 *          2.ajax的返回值会自动解析json为js对象

 *          3.JSON.parse(str)

 *

@WebServlet("/demo")
public class DemoServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("UTF-8");
        resp.setContentType("application/json;charset=utf-8");

        User user = new User();
        user.setUsername("zhangsan");
        user.setPassword("1235564231519");

        JSONObject jsonObject = (JSONObject) JSONObject.toJSON(user);
        PrintWriter printWriter = resp.getWriter();
        printWriter.println(jsonObject);
    }
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.6.0.js"></script>
   
</head>
<body>

    <button id="btn">点我发ajax</button>
    <h1 id="h1">当前登录的用户是:</h1>
</body>
</html>
<script>
    $("#btn").click(function () {
        $.ajax({
            url:"/web_war_exploded/demo",
            type:"GET",
            success:function (data) {
                $("#h1").append(data.username);
            }
        })
    })
</script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值