AJAX与jQuery

2023-11-06

1.AJAX

1.1什么是AJAX(异步刷新技术)?

无刷新技术:刷新页面不跳转,在当前页面刷新,是局部的刷新。例如:地图的缩放和移动都是在当前页面完成的,没有刷新整个页面。

无刷新的好处:

  • 只更新部分页面,有效利用带宽;
  • 提供连续的用户体验;
  • 提供类似C/S的交互效果,操作更方便。

传统web和AJAX的区别:

 AJAX的工作流程:

 2.使用jQuery实现AJAX

传统的AJAX步骤繁琐,方法,属性,常用值较多不好记忆,处理复杂结构的响应数据比较繁琐。jQuery将Ajax相关操作进行了封装

语法一:

 

 

 语法二:

 语法三:

2.JSON 

  • 是一种轻量级的数据交换格式
  • 采用独立于语言的文本格式
  • 通常用于客户端和服务器端之间传递数据

JSON有对象和数组两种类型之分,对象是用大括号,数组是用小括号括起来。可以互相嵌套,功能强大。

 实例(使用AJAX和JSON获取数据库数据)

实现商品列表展示:

domain层:

package domain;

import java.io.Serializable;
import java.util.Set;

public class Product implements Serializable {
    private int id;
    private String name;
    private String description;
    private double price;
    private int stock;
    private int categoryLevel1Id;
    private int categoryLevel2Id;
    private int categoryLevel3Id;
    private String fileName;
    private int idDelete;
    private int brand_id;
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public int getStock() {
        return stock;
    }

    public void setStock(int stock) {
        this.stock = stock;
    }

    public int getCategoryLevel1Id() {
        return categoryLevel1Id;
    }

    public void setCategoryLevel1Id(int categoryLevel1Id) {
        this.categoryLevel1Id = categoryLevel1Id;
    }

    public int getCategoryLevel2Id() {
        return categoryLevel2Id;
    }

    public void setCategoryLevel2Id(int categoryLevel2Id) {
        this.categoryLevel2Id = categoryLevel2Id;
    }

    public int getCategoryLevel3Id() {
        return categoryLevel3Id;
    }

    public void setCategoryLevel3Id(int categoryLevel3Id) {
        this.categoryLevel3Id = categoryLevel3Id;
    }

    public String getFileName() {
        return fileName;
    }

    public void setFileName(String fileName) {
        this.fileName = fileName;
    }

    public int getIdDelete() {
        return idDelete;
    }

    public void setIdDelete(int idDelete) {
        this.idDelete = idDelete;
    }

    public int getBrand_id() {
        return brand_id;
    }

    public void setBrand_id(int brand_id) {
        this.brand_id = brand_id;
    }
}

dao层:

package dao.impl;

import dao.ProductDao;
import domain.PageInfo;
import domain.Product;
import utils.JDBCUtils;

import javax.servlet.annotation.WebServlet;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class ProductDaoImpl extends JDBCUtils implements ProductDao {
    @Override
    public PageInfo<Product> findAll(PageInfo pageInfo) throws SQLException {
        String sql = "SELECT * FROM easybuy_product limit ?,?";
        Connection connection = this.getConnection();
        PreparedStatement ps = connection.prepareStatement(sql);
        ps.setInt(1,(pageInfo.getCurrentPageNo()-1)*pageInfo.getPerPageNo());
        ps.setInt(2,pageInfo.getPerPageNo());
        ResultSet rs = ps.executeQuery();

        List<Product> list = new ArrayList<>();
        while (rs.next()){
            Product product = new Product();
            product.setId(rs.getInt("productId"));
            product.setName(rs.getString("name"));
            product.setDescription(rs.getString("description"));
            product.setPrice(rs.getDouble("price"));
            product.setFileName(rs.getString("fileName"));
            list.add(product);
        }
        pageInfo.setList(list);
        String SQL = "SELECT COUNT(*) FROM easybuy_product";
        ps = connection.prepareStatement(SQL);
        rs = ps.executeQuery();
        int i = 0;
        if (rs.next()){
            i = rs.getInt(1);
        }
        pageInfo.setTotalRecords(i);
        this.release(rs,ps,connection);
        return pageInfo;
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AJAX与jQuery 的相关文章

随机推荐

  • Eclipse中断点调试的基本使用

    Eclipse中断点调试的基本使用 A Debug的作用 调试程序 查看程序执行流程 B 如何查看程序执行流程 什么是断点 就是一个标记 从哪里开始 如何设置断点 你想看哪里的程序 你就在那个有效程序的左边双击即可 在哪里设置断点 哪里不会
  • 2021年第十二届蓝桥杯javaA组国赛

    文章目录 试题 A 纯质数 试题 B 完全日期 试题 C 最小权值 试题 D 覆盖 试题 E 123 试题 F 二进制问题 试题 G 冰山 试题 H 和与乘积 试题 I 异或三角 试题 J 积木 以下均为个人想法和解题思路 如有错误或不足
  • openGL之API学习(五十二)透视分割 透视除法的执行位置

    根据文章https blog csdn net hankern article details 89220736 的分析 透视分割 又叫透视除法 执行的位置在栅格化阶段
  • Integer类型和int类型比较是否相等 == equals - Java

    非常经典的一个面试题 先说清楚一个 再来说另一个 用来判断两个变量之间的的值是否相等 变量就可以分为 基本数据类型变量 引用类型 1 基本数据类型的变量直接比较值 2 引用类型比较对应的引用指向的内存的首地址 equals只有引用数据类型有
  • docker的运行原理

    Docker 是一个开源的容器化技术 它能够让开发者将应用及其依赖打包到一个轻量级的 可移植的容器中 这个容器可以在几乎任何机器上一致地运行 要了解 Docker 的运行原理 我们首先要理解以下几个核心概念 容器 Container 容器是
  • android自定义控件onclick,android – 如何在ImageButton中设置onClick事件?

    我在 android中创建了一个图像按钮 但是当我点击该按钮时没有发生任何事情 我已经设置了所有属性 但仍然没有发生任何事情 所以 在我错的地方 你能帮助我吗 xml文件 android id id widget39 android lay
  • 产品数据管理系统框架与信息安全

    2 1引言 产品数据管理 Product Data Management PDM 以产品为中心 通过计算机网络和数据库技术 把企业生产过程中所有与产品相关的信息和过程集成起来 统一管理 使产品数据在其生命周期内保持一致 最新和安全 为工程技
  • Vue中如何进行数据缓存

    Vue中如何进行数据缓存 Vue是一款流行的前端框架 它提供了许多方便的功能来处理数据 其中一个非常有用的功能是数据缓存 数据缓存可以提高应用程序的性能 减少网络请求 提高用户体验 在本文中 我们将介绍Vue中如何进行数据缓存 并提供一些示
  • 用html实现一个静态登陆页面-可根据需求更改样式

    一 创建html文件 vscode下载相关插件 我们先选择一个文件夹创建login html 之前的文件命无所谓 之后就必须为html或者htm 在编辑改文件输入 且出现提示后按回车或按tab快捷生成基础代码 然后我们下载一个可以方便我们开
  • 解决数据库连接池连接mysql时,每隔8小时mysql自动断开连接的问题

    解决数据库连接池连接mysql时 每隔8小时mysql自动断开所有连接的问题 最近有个问题非常讨厌 我们的工程中使用自己的连接池连接mysql数据库 可mysql数据库每隔8小时就会自动断开所有链接 连接池就失效 需要重新启动tomcat才
  • 组合类、派生类 拷贝构造函数

    在派生类中如何写拷贝构造函数 一种形式 派生类拷贝构造函数名 对象p的引用 基类构造函数名 参数列表 如 student student student p stud p num p name p sex 注意 参数形式 是对象的引用 我们
  • java基础题实现猴子吃桃的问题

    一只猴子一天摘了许多桃子 第一天吃了一半 然后忍不住又吃了一个 第二天又吃了一半 再加上一个 后面每天都是这样吃 到第10天的时候 小猴子发现只有一个桃子了 问小猴子第一天共摘了多少个桃子 问题分析 第十天时只剩下一个桃子 又知道猴子每次吃
  • 【VB技巧】VB静态调用与动态调用dll详解

    摘 自 http lcx cc i 489 请注意 在以下语法格式中 请注意 函数名 的 大小写 静态与动态比较 静态调用简单 动态调用麻烦 静态调用占用资源多 动态调用占用资源少 正所谓鱼和熊掌不可兼得 静态调用定义 就是常用的申明API
  • Smart-tools 免费的开发工具箱

    Smart tools 免费的开发工具箱 背景介绍 作为一名开发人员 我希望有一款轻便且简洁的工具能够帮助自己快速解决一些日常开发的麻烦 因此 我创建了此网站 Smart tools 其目标是帮助开发人员提高工作效率 目前 本网站已支持20
  • FPGA--synplify+vivado综合 时钟路径优化Error

    项目场景 目前在做FPGA验证 使用到了synplify vivado的流程 rtl使用了synopsys的ip vivado似乎不能直接使用 而且vivado读取rtl文件时间也很长 需要3 4个小时才能读取完 主要是工程有点大 源文件比
  • 地址栏从输入url到页面展示经历了什么过程

    URL解析 浏览器会解析URL 确定其协议 例如HTTP或HTTPS 主机名和路径 如果主机名是一个域名 经过DNS服务器转换成对应的IP地址 建立连接 浏览器使用TCP协议通过IP地址建立到Web服务器的连接 在此过程中经历三次握手四次挥
  • 【C语言三种自定义类型】

    目录 前言 一 结构体 struct 一 结构体的声明 1 结构的声明 2 特殊的声明 不完全声明 3 结构体的自引用 4 结构体的初始化与赋值 5 结构体内存对齐 内存对齐规则 6 修改默认对齐数 7 结构体传参 二 位段 1 位段的声明
  • 关于js的多种去重方法

    js的多种去重方式 包括ES5 ES6去重 在JavaScript中 我们可以在很多场景下使用到去重功能 比如说在数组中 去掉数组中重复的数据 这是最常见的 以下是实现JavaScript数组去重的几种方式 利用双重for循环去重 第一种方
  • android window类

    Android的Window类 一 Android的GUI层并不复杂 它的复杂度类似于WGUI这类基于布局和对话框的GUI 与MFC QT等大型框架没有可比性 甚至飞漫魏永明的MiniGUI都比它复杂许多 您也许会问 这样简单的GUI如何实
  • AJAX与jQuery

    1 AJAX 1 1什么是AJAX 异步刷新技术 无刷新技术 刷新页面不跳转 在当前页面刷新 是局部的刷新 例如 地图的缩放和移动都是在当前页面完成的 没有刷新整个页面 无刷新的好处 只更新部分页面 有效利用带宽 提供连续的用户体验 提供类