app开发定制JavaWeb之前后端分离的三步骤

文章目录


提示:app开发定制以下是本篇文章正文内容,Javaapp开发定制系列学习将会持续更新

一、Ajax (异步JavaScript和XML)

AJAX app开发定制是一种用于app开发定制创建快速动态网页的技术。

XMLHttpRequestapp开发定制实现异步通信:用于发送 HTTP 请求,app开发定制实现后台与服务器交换数据。

1-1 Ajax 发送请求的步骤

// 1. 创建请求对象var xhr = new XMLHttpRequest();// 2. 调用open方法,设置请求方法和请求路径xhr.open("GET", "/data/grade-list.json");// 3. 请求体xhr.onload = function() {	// 1. 将后端的响应结果(JSON数据)进行反序列化	// this.responseText 是 JSON 格式的字符串	var students = JSON.parse(this.responseText);	// 2. 修改 DOM 树,将数据填充到 DOM 树中	var oTable = document.querySelector('table');	var html = `<tr><td>${students}</td><td>${students.size}</td></tr>`;	oTable.innerHTML += html;}// 4. 发送请求xhr.send();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

1-2 如果是POST请求,则还需要设置请求头

var s = JSON.stringify(students);var xhr = new XMLHttpRequest();// 因为要在请求体中携带 JSON 数据,所以只能使用 POST 方法xhr.open("POST", "/get-json-from-request-body");xhr.setRequestHeader("Content-Type", "application/json; charset=utf-8");xhr.send(s);    // send 的参数,就是请求体
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

二、JSON的使用

2-1 概念

  • JSON 是用于存储和传输数据的格式。
  • JSON 通常用于服务端向网页传递数据 。
  • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation)
  • JSON 是轻量级的文本数据交换格式
  • JSON 具有自我描述性,更易理解

2-2 格式

  • 大括号 { } 保存对象
  • 中括号 [ ] 保存数组,数组可以包含多个对象
  • 数据以 (name: value)对 保存。
[  {    "姓名": "张三",    "成绩": 28  },  {    "姓名": "李四",    "成绩": 29  }]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2-3 JSON 和 JS 转换

// JSON.parase()方法: 将JSON数据转换为JS对象var obj = JSON.parse('{"name":"baidu","site":"www.baidu.com" }');// JSON.stringlfy()方法: 将 JavaScript 对象转换为字符串var myJSON = JSON.stringify(obj);
  • 1
  • 2
  • 3
  • 4
  • 5

2-4 JSON 和 Java 转换

ObjectMapper mapper = new ObjectMapper();
  • 1

① JSON字符串转对象

// Student 对象Student student = new Student("wang", 20);// 将对象转换为json字符串String jsonString = mapper.writeValueAsString(student);// jsonString = "{\"name\":\"wang\", \"age\":20}"// 将字符串转换为对象Student student = mapper.readValue(jsonString, Student.class);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

②List集合和JSON字符串之间转换

// List 集合List<Student> studentList= new ArrayList<>();studentList.add(。。。);// 将List集合转换为json字符串String jsonStr = mapper.writeValueAsString(studentList);        // 将json字符串转换为List集合List<Student> studentList2 = mapper.readValue(jsonStr, List.class);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

③Map集合和JSON字符串之间转换

// Map集合Map<String, Object> testMap = new HashMap<>();testMap.put("name", "22");testMap.put("age", 20);// 将Map集合转换为json字符串String jsonStr = mapper.writeValueAsString(testMap);// 将json字符串转换为Map集合Map<String, Object> testMapDes = mapper.readValue(jsonStr, Map.class);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

三、 (修改 Dom 树)

一个页面的结构是一个树形结构, 称为 DOM 树。

  • 文档: 一个页面就是一个 文档,使用 document 表示。
  • 元素: 页面中所有的标签都称为 元素,使用 element 表示。
  • 节点: 网页中所有的内容都可以称为 节点,使用 node 表示。

这些概念在 JS 代码中就对应一个个的对象,所以叫做 “文档对象模型” 。

3-1 获取元素

querySelector 获取元素对象:

<div class="box">abc</div><div id="id">def</div><h3><span><input type="text"></span></h3><script>	// 类选择器	var element1 = document.querySelector('.box');	// id 选择器	var element2 = document.querySelector('#id');	// 标签选择器	var element3 = document.querySelector('h3 span input');</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

3-2 触发事件

<button id="btn">点我一下</button><script>	var btn = document.getElementById('btn');	btn.onclick = function () {		alert("hello world");	}</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3-3 操作元素

<div>	<span>hello world</span>	<img src="cat.jpg"></div><script>	var div = document.querySelector('div');		// 读取 div 文本内容	console.log(div.innerText);	// 修改文本内容。即使有HTML标签,也会当做文本显示	div.innerText = 'hello js';	// 读取HTML内容	console.log(div.innerHTML);	// 修改HTML内容	div.innerHTML = '<span>hello js</span>';	var img = document.querySelector('img');	// 获取元素属性	console.log(img.src);	// 修改元素属性	img.src = "dog.png";</script>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

四、综合应用 - 展示动态页面

类似于 个人中心成绩列表 等动态页面的展示。

4-1 list.html

先书写一个待填充的HTML页面

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <title>成绩单</title></head><body>    <table border='1'>        <!--        <tr>            <td>小明</td>            <td>28</td>        </tr>        -->    </table>    <script src="js/list.js"></script></body></html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

4-2 ListJsonServlet.java

在Java后端,从数据库获取数据,将数据JSON序列化,发送 JSON 数据到前端页面。

@WebServlet("/send-list.json")public class ListJsonServlet extends HttpServlet {    private final ObjectMapper objectMapper = new ObjectMapper();    @Override    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        List<Student> studentList = new ArrayList<>();        // 1. 从数据库获取 Student 数据        try (Connection c = DBUtil.connection()) {            String sql = "select name, grade from grades order by id";            try (PreparedStatement ps = c.prepareStatement(sql)) {                try (ResultSet rs = ps.executeQuery()) {                    while (rs.next()) {                        Student student = new Student(                                rs.getString("name"),                                rs.getInt("grade")                        );                        // 2. 将Student 数据存入List 集合中                        studentList.add(student);                    }                }            }        } catch (SQLException exc) {            throw new RuntimeException(exc);        }        // 3. JSON序列化        String json = objectMapper.writeValueAsString(studentList);        // 4. 响应        resp.setCharacterEncoding("utf-8");        resp.setContentType("application/json");        resp.getWriter().println(json);    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35

4-3 list.js

在JS中,发送 Ajax 请求,获取到 JSON 数据,再修改 DOM 树。

// 为了让 js 代码可以在所有资源都加载完成后才去执行,就入口代码放在 window 的 load 事件处理中window.onload = function() {    var xhr = new XMLHttpRequest()    xhr.open('get', '/send-list.json')    xhr.onload = function() {        // 定义对象数组 = 响应体的文本内容(JSON字符串)反序列化的结果        var list = JSON.parse(xhr.responseText)        var oTable = document.querySelector('table')        // 遍历数组        // const list = [ {name:'zhangsan',grade:18}, {name:'lisi', grade:36} ]        list.forEach( function(i){            var html = `<tr><td>${i.name}</td><td>${i.grade}</td></tr>`            oTable.innerHTML += html        })    }    xhr.send()}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

4-4 执行效果


总结:
提示:这里对文章进行总结:
以上就是今天的学习内容,本文是JavaWeb的学习,项目前后端分离的三个步骤,一是Axjx发送请求,二是前后端传输Json数据,三是Js修改前端DOM树。之后的学习内容将持续更新!!!

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发