自用笔记——06

  1. ajax

  2. 同步和异步

    举个例子:普通B/S模式(同步) AJAX技术(异步)

    *  同步:提交请求->等待服务器处理->处理完毕返回 这个期间客户端浏览器不能干任何事
    
           *   异步: 请求通过事件触发->服务器处理(这时浏览器仍然可以作其他事情)->处理完毕
    
       同步是指:发送方发出数据后,等接收方发回响应以后才发下一个
    
                     数据包的通讯方式。  异步是指:发送方发出数据后,不等接收方发回响应,接着发送下
    
                    个数据包的通讯方式 
    

    易懂的理解:

    异步传输: 你传输吧,我去做我的事了,传输完了告诉我一声 同步传输: 你现在传输,我要亲眼看你传输完成,才去做别的事

  3. 什么是ajax?

允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax.

2.Ajax的工作原理

AJAX采用异步交互过程。AJAX在用户与服务器之间引入一个中间媒介,从而消除了网络交互过程中的处理—等待—处理—等待缺点。

用户的浏览器在执行任务时即装载了AJAX引擎。AJAX引擎用JavaScript语言编写,通常藏在一个隐藏的框架中。它负责编译用户界面及与服务器之间的交互。

AJAX引擎允许用户与应用软件之间的交互过程异步进行,独立于用户与网络服务器间的交流。现在,可以用Javascript调用AJAX引擎来代替产生一个HTTP的用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入整个页面的需求可以交给AJAX来执行。

  1. ajax得实现方式基于 Jquery来实现

Jquery对js得一种封装 使我们操作dom元素更加简单。

(1)$.get(url,data,callback,type);

1. url: 请求服务器的地址。
2. data: 请求时携带的参数 格式是key/value  {key:value,key:value}
3. callback: 服务器响应成功后调用的函数。 function(msg){}   msg:服务器响应的内容。
4. type: 服务器响应的数据格式.  text 文本类型  json对象类型  xml这个不大用。

(2)$.post(url,data,callback,type); 和get方式一样

 (3)$.ajax({
       url: 请求路径,
       data: 携带的数据
       type: 请求方式
       success: 服务器响应成功后触发的函数,
       dataType: 服务器响应的数据类型
 });

在这里插入图片描述
在这里插入图片描述
4. json对象

JSON(JavaScript Object Notation)一种简单的数据格式,比xml更轻巧。JSON是JavaScript原生格式,这意味着在JavaScript中处理JSON数据不需要任何特殊的API或工具包。

JSON的规则很简单:对象是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’对”之间使用“,”(逗号)分隔。

规则如下:

   1)映射用冒号(“:”)表示。名称:值

   2)并列的数据之间用逗号(“,”)分隔。名称1:值1,名称2:值2

   3) 映射的集合(对象)用大括号(“{}”)表示。{名称1:值1,名称2:值2}

   4) 并列数据的集合(数组)用方括号(“[]”)表示。

     [

       {名称1:值,名称2:值2},

       {名称1:值,名称2:值2}

     ]

  5  元素值可具有的类型:string, number, object, array, true, false, null 

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/10/30
  Time: 14:13
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
    <%--①引入jquery得插件--%>
    <script type="text/javascript" src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>
  </head>
  <body>
      <button onclick="ck()">点击我</button>
  </body>

<script>
     //表示一个json对象 {k:v,k:v} 简单
     // var p={"n":"刘一凡","a":17};
     // alert(p.n+"----->"+p.a);
     //集合json对象
     // var students=[
     //   {"name":"刘健","age":20},
     //   {"name":"王飞","age":18},
     //   {"name":"王一同","age":38}
     // ];
     // alert(students[0].name);

     // var p={
     //   "programmers":
     //           [
     //             {"firstName": "Brett", "email": "brett@newInstance.com" },
     //             {"firstName": "Jason", "email": "jason@servlets.com" }
     //           ]
     //
     // }
     //
     // alert(p.programmers[0].email);

     var people ={
       "programmers": [
         { "firstName": "Brett", "email": "brett@newInstance.com" },
         { "firstName": "Jason",  "email": "jason@servlets.com" },
         { "firstName": "Elliotte", "lastName":"Harold", "email": "elharo@macfaq.com" }
       ],
       "authors": [
         { "firstName": "Isaac",  "genre": "science fiction" },
         { "firstName": "Tad", "genre": "fantasy" },
         { "firstName": "Frank",  "genre": "christian fiction" }
       ],
       "musicians": [
         { "firstName": "Eric",  "instrument": "guitar" },
         { "firstName": "Sergei", "instrument": "piano" }
       ]};
     window.alert(people.programmers[1].firstName);
     window.alert(people.musicians[1].instrument);

     function ck(){
          /*$.get("${pageContext.request.contextPath}/ajax01",function(result){ //
               //拿到结果使用
               alert(result);
          });*/
       /*$.post("${pageContext.request.contextPath}/ajax01",{"uname":"范龙飞","age":18},function(result){ //
         //拿到结果使用
         alert(result);
       });*/
       $.ajax({
           url: "${pageContext.request.contextPath}/ajax01",
           data: "uname=刘哥&age=19",
           type: "POST",
           success: function (result) {
                alert(result)
           }
       })
     }
</script>
</html>

服务端响应的数据格式为json
在这里插入图片描述
在这里插入图片描述
练习: 点击某个按钮使表格数据回显在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2. ajax+dao+servlet+layui

在这里插入图片描述
创建一个web工程并把所有jar放入web-inf/lib下

在这里插入图片描述
把layui得插件下载

在这里插入图片描述
在网页中引入layui相关的css和js

在这里插入图片描述
编写自己的网页

在这里插入图片描述
编写servlet

在这里插入图片描述
编写dao

package com.ykq.dao;

import com.ykq.entity.User;

import java.util.ArrayList;
import java.util.List;

public class UserDao extends BaseDao{
    //查询所有记录
    public List<User> queryAll() {
         List<User> list=new ArrayList<>();
         try {
             getConnection();
             String sql = "select * from tb_user";
             ps = connection.prepareStatement(sql);
             resultSet = ps.executeQuery();
             while (resultSet.next()) {
                 User user = new User();
                 user.setUserId(resultSet.getInt("userId"));
                 user.setSex(resultSet.getInt("sex"));
                 user.setUsername(resultSet.getString("username"));
                 user.setRealname(resultSet.getString("realname"));
                 user.setPassword(resultSet.getString("password"));
                 list.add(user);
             }
         }catch (Exception e){
             e.printStackTrace();
         }finally {
             closeAll();
         }

     return list;
}
//查询该表得总条数
public Integer count() {
    try {
        getConnection();
        String sql = "select count(*) as c from tb_user";
        ps = connection.prepareStatement(sql);
        resultSet = ps.executeQuery();
        while (resultSet.next()) {
            return resultSet.getInt("c");
        }
    }catch (Exception e){
        e.printStackTrace();
    }finally {
        closeAll();
    }
    return 0;
}

}

编写user实体和tableLayui实体

package com.ykq.entity;

public class User {
    private Integer userId;
    private String username;
    private String password;
    private String realname;
    private Integer sex;

@Override
public String toString() {
    return "User{" +
            "userId=" + userId +
            ", username='" + username + '\'' +
            ", password='" + password + '\'' +
            ", realname='" + realname + '\'' +
            ", sex=" + sex +
            '}';
}

public User() {
}

public User(Integer userId, String username, String password, String realname, Integer sex) {
    this.userId = userId;
    this.username = username;
    this.password = password;
    this.realname = realname;
    this.sex = sex;
}

public User(String username, String password, String realname, Integer sex) {
    this.username = username;
    this.password = password;
    this.realname = realname;
    this.sex = sex;
}

public Integer getSex() {
    return sex;
}

public void setSex(Integer sex) {
    this.sex = sex;
}

public Integer getUserId() {
    return userId;
}

public void setUserId(Integer userId) {
    this.userId = userId;
}

public String getUsername() {
    return username;
}

public void setUsername(String username) {
    this.username = username;
}

public String getPassword() {
    return password;
}

public void setPassword(String password) {
    this.password = password;
}

public String getRealname() {
    return realname;
}

public void setRealname(String realname) {
    this.realname = realname;
}
}	

package com.ykq.util;

public class TableLayui {
    private Integer code=0; //状态码
    private String msg=""; //信息
    private Integer count; //总条数
    private Object data; //表格数据

    public TableLayui() {
    }

    public TableLayui(Integer code, String msg, Integer count, Object data) {
        this.code = code;
        this.msg = msg;
        this.count = count;
        this.data = data;
    }

    public Integer getCode() {
        return code;
    }

    public void setCode(Integer code) {
        this.code = code;
    }

    public String getMsg() {
        return msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

2.2 添加分页:

在这里插入图片描述
(2)servlet

在这里插入图片描述
(3)dao代码

在这里插入图片描述
4. 添加删除和修改按钮在这里插入图片描述
5. 添加相应的事件
在这里插入图片描述

5.完成删除功能

在这里插入图片描述

后台:servlet

在这里插入图片描述
公共结果类

public class CommonResult {
     private Integer code; //状态码
     private String msg; //消息
     private Object data; //数据
}
  1. 添加表格头部工具栏

在这里插入图片描述
表格头工具栏添加监听事件

在这里插入图片描述

出现添加表单的弹出层

在这里插入图片描述
弹出框

<%--表单--%>
<form  style="display: none;margin: 0 10px" class="layui-form" action="" id="userForm">
  <div class="layui-form-item">
    <label class="layui-form-label">账号:</label>
    <div class="layui-input-inline">
      <input type="text" name="username" lay-verify="title" autocomplete="off" placeholder="请输入标题" class="layui-input">
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">密码:</label>
    <div class="layui-input-inline">
      <input type="text" name="password" lay-verify="required" lay-reqtext="用户名是必填项,岂能为空?" placeholder="请输入密码" autocomplete="off" class="layui-input">
    </div>
  </div>
  <div class="layui-form-item">
    <div class="layui-inline">
      <label class="layui-form-label">真实姓名:</label>
      <div class="layui-input-inline">
        <input type="tel" name="realname"  autocomplete="off" class="layui-input">
      </div>
    </div>
  </div>
  <div class="layui-form-item">
    <label class="layui-form-label">性别:</label>
    <div class="layui-input-block">
      <input type="radio" name="sex" value="男" title="男" checked="">
      <input type="radio" name="sex" value="女" title="女">
    </div>
  </div>
  <div class="layui-form-item">
    <div class="layui-input-block">
      <input type="button" class="layui-btn" lay-submit="" lay-filter="submitUser" value="立即提交">
      <input type="reset" class="layui-btn layui-btn-primary" value="重置">
    </div>
  </div>
</form>

确认添加

在这里插入图片描述
servlet在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值