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>

<think>好的,我需要回答用户关于JSONAJAX的关系及用法的问题,并解释如何使用它们进行前后端交互。首先,我得确认自己对这两个概念的理解是否正确。 JSON是一种轻量级的数据交换格式,基于文本,易于读写解析。而AJAX是一种在无需重新加载整个页面的情况下,与服务器交换数据并更新部分网页内容的技术。两者的关系应该是AJAX用于异步通信,而JSON作为数据格式在前后端之间传输数据。 接下来,用户想知道如何具体使用JSONAJAX进行交互。我需要分步骤说明,可能包括前端发送请求、后端处理并返回JSON、前端解析响应等步骤。同时,要结合用户提供的引用内容,特别是引用[2]中的后端代码示例,说明如何在后端处理请求并生成JSON响应。 要注意用户提到的系统级指令,比如数学公式的格式,但这个问题可能不涉及数学表达式,所以可能不需要使用。不过要确保使用中文回答,结构清晰,并生成相关问题。 需要检查用户提供的引用内容是否有帮助。引用[1]提到AJAXJSON的广泛应用,以及JSON相对于XML的优势。引用[2]则给出了后端处理的具体代码示例,包括如何接收参数、创建JSON对象并序列化返回。这些内容应该整合到回答中,解释前后端如何配合。 可能需要分步骤说明,例如前端使用AJAX发送请求,后端处理并返回JSON,前端处理响应。每个步骤需要具体说明代码结构,比如前端使用JavaScript的fetch或XMLHttpRequest,后端如何设置方法来接收参数并生成JSON。 还需要注意用户提到的引用标识,在回答中适当位置添加[^1][^2],尤其是在提到JSON的优势后端处理部分时。 最后,生成相关问题,可能涉及JSON与XML的比较、AJAX的优势、安全性问题或数据处理技巧等。 需要确保回答符合用户的要求,结构清晰,步骤明确,并正确引用提供的资料。</think>### JSONAJAX的关系及交互方法 #### 一、JSONAJAX的关系 1. **JSON的作用** JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,以键值对形式组织数据,易于人类阅读机器解析。**它常用于前后端数据传输**,替代传统的XML格式,因为其语法简洁、体积更小[^1]。 2. **AJAX的作用** AJAX(Asynchronous JavaScript and XML)是一种异步通信技术,允许网页在不刷新的情况下与服务器交互。**AJAX的核心是通过JavaScript发起HTTP请求,并动态更新页面内容**。 3. **两者的结合** AJAX负责通信流程,JSON负责数据封装。例如,前端通过AJAX发送请求,后端返回JSON格式的响应数据,前端解析JSON后更新页面。 --- #### 二、使用JSONAJAX实现交互的步骤 ##### 1. 前端发送AJAX请求(以JavaScript为例) ```javascript // 使用fetch API发送POST请求 fetch('/api/endpoint', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ // 将对象转为JSON字符串 param1: 'value1', param2: 'value2' }) }) .then(response => response.json()) // 将响应解析为JSON对象 .then(data => { console.log(data.Message); // 输出"Success" console.log(data.Data.Param1Result); // 处理后端返回的数据 }); ``` ##### 2. 后端处理请求并返回JSON(以C#为例) 引用[2]中的示例代码展示了如何接收参数并生成JSON响应: ```csharp [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public static string tt(string param1, string param2) { var resultObject = new { Message = "Success", Data = new { Param1Result = param1.ToUpper(), Param2Result = param2.ToLower(), SomeOtherData = "Hello from server!" } }; return Newtonsoft.Json.JsonConvert.SerializeObject(resultObject); } ``` **关键点**: - 后端参数名(`param1`, `param2`)必须与前端的JSON键名一致[^2]。 - 使用`JsonConvert.SerializeObject`将对象序列化为JSON字符串。 ##### 3. 安全性注意事项 - **跨域问题**:若前端与后端域名不同,需配置CORS(跨域资源共享)。 - **数据验证**:后端需对接收的参数进行合法性检查,防止注入攻击。 --- #### 三、JSON与XML的对比优势 | 特性 | JSON | XML | |--------------|---------------------------|-------------------| | 数据体积 | 更小(无冗余标签) | 较大(标签重复) | | 解析速度 | 快(直接映射为JS对象) | 慢(需DOM解析) | | 可读性 | 高(类似代码对象) | 中等(标签嵌套) | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值