JavaWeb快速入门:AJAX、Axios与JSON实战

JavaWeb快速入门 Web环境搭建 一、思维导图 JavaWeb支持编写:HTML网页代码、Java代码、SQL数据库代码等多种语言。 简单认识Web服务 : 二、认识JavaWeb 1.JavaWeb概述: (1)编写的程序可以通过浏览器进行访问,就可以称为web程序。 (2)web应用程序都是基于请求和响应来实现 Web服务器的作用是接收客户端的请求,给客户端作出响应。 ... 阅读详情

本文纲要

  1. AJAX 概述
    同步与异步交互
  2. AJAX 快速入门
    原生 AJAX 核心对象与步骤
    服务端 AjaxServlet
    前端示例代码
  3. 案例:验证用户名是否存在
    后端 SelectUserServlet
    前端注册页面 register.html
    交互流程与关键代码
  4. Axios 异步框架
    Axios 基本使用
    请求方式别名
    Axios 与 JSON 的自动转换
  5. JSON 数据格式
    基础语法
    JSON 字符串与 JS 对象互转
  6. JSON 与 Java 对象转换
    FastJson API
    User 转换示例
  7. 综合案例:品牌列表查询
    项目结构
    后端 SelectAllServlet
    前端 brand.html 渲染逻辑
  8. 综合案例:新增品牌
    后端 AddServlet
    前端 addBrand.html 表单处理
    JSON 数据传输与接收
  9. 总结

AJAX 概述

AJAX 全称为 Asynchronous JavaScript And XML,即异步的 JavaScript 和 XML。它是一种在不重新加载整个页面的情况下与服务器交换数据并更新部分网页的技术。

1 ) AJAX 的两大核心作用

作用说明
与服务器进行数据交换通过 AJAX 可以给服务器发送请求,并获取服务器响应的数据,进而使用 HTML + AJAX 替代传统的 JSP 页面,实现前后端分离。
异步交互客户端发送请求后不需要等待服务器处理完成,可以继续执行其他操作,用户体验更流畅。典型应用如:搜索联想、用户名唯一性校验。

2 ) 同步与异步对比

同步请求:用户操作会阻塞,等待服务器响应后才能继续操作。
异步请求:请求发送后浏览器不锁死,用户可以继续操作,服务器响应到达后再通过回调处理。

服务器 浏览器 服务器 浏览器 同步请求 期间用户只能等待 异步请求 用户可以继续操作 发送请求 处理中(耗时3秒) 响应 发送异步请求 处理中 响应 回调函数更新局部页面

AJAX 快速入门

原生 AJAX 的核心对象是 XMLHttpRequest,通过它可以与服务器进行异步数据交换。

1 ) 开发步骤

  1. 创建 XMLHttpRequest 对象
  2. 调用 open()方法设置请求方式和 URL
  3. 调用 send() 发送请求
  4. 绑定 onreadystatechange 事件,监听响应状态并处理数据

2 ) 服务端 Servlet

编写一个简单的 AjaxServlet,响应固定字符串。

package com.wb.web.servlet;
 
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
 
@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 响应数据 
        response.getWriter().write("hello ajax~");
    }
 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
}

3 )前端 HTML 页面

01-ajax-demo1.html 展示了完整的 AJAX 请求流程。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>AJAX 快速入门</title>
</head>
<body>
<script>
    // 1. 创建核心对象(兼容低版本 IE)
    var xhttp;
    if (window.XMLHttpRequest) {
        xhttp = new XMLHttpRequest();
    } else {
        xhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
 
    // 2. 发送异步请求(建议使用全路径,便于前后端分离)
    xhttp.open("GET", "http://localhost:8080/ajax-demo/ajaxServlet");
    xhttp.send();
 
    // 3. 获取响应数据 
    xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            alert(this.responseText);  // 弹出 "hello ajax~"
        }
    };
</script>
</body>
</html>

说明:readyState 为 4 表示请求已完成且响应就绪,status 为 200 表示成功。responseText 属性保存服务器返回的文本数据。

案例:验证用户名是否存在

需求:注册页面中,当用户名输入框失去焦点时,立即异步请求后端校验用户名是否已存在,并给出提示。

1 ) 交互流程

SelectUserServlet register.html 用户 SelectUserServlet register.html 用户 输入用户名, 光标离开(onblur) 异步GET请求 username=xxx 响应 "true"(存在) 或 "false"(不存在) 显示/隐藏"用户名已存在"

2 )后端 SelectUserServlet

package com.wb.web.servlet;
 
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
import java.io.IOException;
 
@WebServlet("/selectUserServlet")
public class SelectUserServlet extends HttpServlet {
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 1. 接收用户名 
        String username = request.getParameter("username");
 
        // 2. 调用service查询用户对象(此处模拟逻辑,实际应查数据库)
        boolean flag = true;   // true 表示已存在 
 
        // 3. 响应标记 
        response.getWriter().write("" + flag);
    }
 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
}

3 ) 前端 register.html

<script>
    // 1. 给用户名输入框绑定失去焦点事件 
    document.getElementById("username").onblur = function () {
        // 获取输入的用户名 
        var username = this.value;
 
        // 2.1 创建核心对象 
        var xhttp;
        if (window.XMLHttpRequest) {
            xhttp = new XMLHttpRequest();
        } else {
            xhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }
 
        // 2.2 发送请求(携带参数)
        xhttp.open("GET", "http://localhost:8080/ajax-demo/selectUserServlet?username=" + username);
        xhttp.send();
 
        // 2.3 获取响应 
        xhttp.onreadystatechange = function() {
            if (this.readyState == 4 && this.status == 200) {
                if(this.responseText == "true"){
                    // 用户名存在,显示提示信息 
                    document.getElementById("username_err").style.display = '';
                } else {
                    // 用户名不存在,隐藏提示 
                    document.getElementById("username_err").style.display = 'none';
                }
            }
        };
    }
</script>

Axios 异步框架

Axios 是对原生 AJAX(XMLHttpRequest)的封装,用于简化异步请求的书写。
它支持 Promise 风格的调用,代码更加简洁。

1 ) Axios 基本使用

两步走:引入 JS 文件 + 调用 axios() 方法。

引入 Axios 库

<script src="js/axios-0.18.0.js"></script>

发送 GET / POST 请求

<script>
    // GET 请求:参数拼在URL后 
    axios({
        method: "get",
        url: "http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan"
    }).then(function (resp) {
        alert(resp.data);  // 响应数据 
    });
 
    // POST 请求:参数通过 data 属性传递 
    axios({
        method: "post",
        url: "http://localhost:8080/ajax-demo/axiosServlet",
        data: "username=zhangsan"
    }).then(function (resp) {
        alert(resp.data);
    });
</script>

对应后端 AxiosServlet

@WebServlet("/axiosServlet")
public class AxiosServlet extends HttpServlet {
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("get...");
        String username = request.getParameter("username");
        System.out.println(username);
        response.getWriter().write("hello Axios~");
    }
 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("post...");
        this.doGet(request, response);
    }
}

2 ) 请求方式别名

Axios 还提供了更简洁的别名方法:

// GET 别名 
axios.get("http://localhost:8080/ajax-demo/axiosServlet?username=zhangsan")
     .then(function (resp) {
         alert(resp.data);
     });
 
// POST 别名 
axios.post("http://localhost:8080/ajax-demo/axiosServlet", "username=zhangsan")
     .then(function (resp) {
         alert(resp.data);
     });

注意:使用 axios.post() 时,第二个参数直接放置请求体数据(字符串或对象均可,如果是对象则 Axios 会自动转为 JSON)。

3 ) Axios 自动处理 JSON

当 data 属性传入 JavaScript 对象时,Axios 会自动将其序列化为 JSON 字符串发送,并且设置请求头 Content-Type: application/json。

var jsObject = { name: "zhangsan" };
 
axios({
    method: "post",
    url: "http://localhost:8080/ajax-demo/axiosServlet",
    data: jsObject       // 自动转为 {"name":"zhangsan"}
}).then(function (resp) {
    alert(resp.data);
});

JSON 数据格式

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写,也易于机器解析。目前已成为前后端数据交互的主流载体。

1 ) JSON 基础语法

JSON 是一段字符串
键必须用双引号包裹,值可以是数字、字符串、布尔值、数组、对象或 null

示例:

{
    "name": "zhangsan",
    "age": 23,
    "addr": ["北京", "上海", "西安"]
}

2 ) JSON 与 JS 对象互转

在浏览器中可以使用内置对象 JSON 进行转换。

<script>
    // 1. 定义 JSON 字符串 
    var jsonStr = '{"name":"zhangsan","age":23,"addr":["北京","上海","西安"]}';
 
    // 2. JSON 字符串 转 JS 对象 
    let jsObject = JSON.parse(jsonStr);
    alert(jsObject.name);   // "zhangsan"
 
    // 3. JS 对象 转 JSON 字符串 
    let jsonStr2 = JSON.stringify(jsObject);
    alert(jsonStr2);
</script>

JSON 与 Java 对象转换

在服务端需要将 Java 对象与 JSON 字符串互相转换,常用库为阿里巴巴的 Fastjson。

1 ) 引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.62</version>
</dependency>

2 ) Fastjson 核心 API

方法说明
JSON.toJSONString(Object)Java 对象 → JSON 字符串
JSON.parseObject(String, Class)JSON 字符串 → 指定类型的 Java 对象

3 ) 代码示例

User 实体类

public class User {
    private Integer id;
    private String username;
    private String password;
    // getter & setter & toString 省略...
}

转换测试

import com.alibaba.fastjson.JSON;
 
public class FastJsonDemo {
    public static void main(String[] args) {
        // 1. Java对象 → JSON字符串 
        User user = new User();
        user.setId(1);
        user.setUsername("zhangsan");
        user.setPassword("123");
        String jsonString = JSON.toJSONString(user);
        System.out.println(jsonString);
        // 输出:{"id":1,"password":"123","username":"zhangsan"}
 
        // 2. JSON字符串 → Java对象 
        String json = "{\"id\":1,\"password\":\"123\",\"username\":\"zhangsan\"}";
        User u = JSON.parseObject(json, User.class);
        System.out.println(u);
    }
}

综合案例:品牌列表查询

需求:页面加载完成后,通过 Axios 异步请求后端,查询所有品牌数据并以表格形式展示。

1 ) 项目结构(brand-demo)

brand-demo 
├── pom.xml 
└── src 
    ├── main 
    │   ├── java/com/wb 
    │   │   ├── mapper/BrandMapper.java 
    │   │   ├── pojo/Brand.java 
    │   │   ├── service/BrandService.java 
    │   │   ├── util/SqlSessionFactoryUtils.java 
    │   │   └── web 
    │   │       ├── AddServlet.java 
    │   │       └── SelectAllServlet.java 
    │   ├── resources 
    │   │   ├── mybatis-config.xml 
    │   │   └── com/wb/mapper/BrandMapper.xml 
    │   └── webapp 
    │       ├── addBrand.html 
    │       ├── brand.html 
    │       └── js/axios-0.18.0.js 
    └── test 

2 ) 后端 SelectAllServlet

@WebServlet("/selectAllServlet")
public class SelectAllServlet extends HttpServlet {
    private BrandService brandService = new BrandService();
 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 1. 调用 Service 查询所有品牌 
        List<Brand> brands = brandService.selectAll();
 
        // 2. 将集合转为 JSON 数组 
        String jsonString = JSON.toJSONString(brands);
 
        // 3. 设置响应类型并写出 
        response.setContentType("text/json;charset=utf-8");
        response.getWriter().write(jsonString);
    }
 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
}

3 ) 前端 brand.html 核心逻辑

直接访问 brand.html 后,页面自动请求数据并动态渲染表格。

<script src="js/axios-0.18.0.js"></script>
<script>
    // 页面加载完成事件 
    window.onload = function () {
        // 发送 GET 请求 
        axios({
            method: "get",
            url: "http://localhost:8080/brand-demo/selectAllServlet"
        }).then(function (resp) {
            // resp.data 就是服务器返回的品牌数组 
            let brands = resp.data;
 
            // 拼接表头 
            let tableData = "<tr><th>序号</th><th>品牌名称</th><th>企业名称</th><th>排序</th><th>品牌介绍</th><th>状态</th><th>操作</th></tr>";
 
            // 遍历数据拼接每一行 
            for (let i = 0; i < brands.length; i++) {
                let brand = brands[i];
                tableData += 
                    "<tr align='center'>" +
                    "<td>" + (i + 1) + "</td>" +
                    "<td>" + brand.brandName + "</td>" +
                    "<td>" + brand.companyName + "</td>" +
                    "<td>" + brand.ordered + "</td>" +
                    "<td>" + brand.description + "</td>" +
                    "<td>" + brand.status + "</td>" +
                    "<td><a href='#'>修改</a> <a href='#'>删除</a></td>" +
                    "</tr>";
            }
 
            // 替换原有表格内容 
            document.getElementById("brandTable").innerHTML = tableData;
        });
    };
</script>

效果:页面展示数据库中所有的品牌记录,无刷新动态加载。

综合案例:新增品牌

需求:在新增页面填写表单,点击“提交”后通过 Axios 发送 POST 请求,将 JSON 数据传给后端完成添加,成功后自动跳转到品牌列表页。

1 ) 后端 AddServlet

注意:request.getParameter() 无法接收 JSON 格式的请求体,需要从输入流中读取字符串,再使用 Fastjson 解析。

@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
    private BrandService brandService = new BrandService();
 
    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // 1. 获取请求体中的 JSON 字符串 
        BufferedReader br = request.getReader();
        String params = br.readLine();
 
        // 2. 将 JSON 字符串转为 Brand 对象 
        Brand brand = JSON.parseObject(params, Brand.class);
 
        // 3. 调用 service 添加 
        brandService.add(brand);
 
        // 4. 响应成功标识 
        response.getWriter().write("success");
    }
 
    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        this.doGet(request, response);
    }
}

前端 addBrand.html

<script src="js/axios-0.18.0.js"></script>
<script>
    document.getElementById("btn").onclick = function () {
        // 1. 构建 JSON 数据对象 
        var formData = {
            brandName: "",
            companyName: "",
            ordered: "",
            description: "",
            status: ""
        };
 
        // 2. 获取表单数据并填入 
        formData.brandName = document.getElementById("brandName").value;
        formData.companyName = document.getElementById("companyName").value;
        formData.ordered = document.getElementById("ordered").value;
        formData.description = document.getElementById("description").value;
 
        // 处理单选按钮(状态)
        let statusNodes = document.getElementsByName("status");
        for (let i = 0; i < statusNodes.length; i++) {
            if (statusNodes[i].checked) {
                formData.status = statusNodes[i].value;
            }
        }
 
        // 3. 发送 AJAX POST 请求 
        axios({
            method: "post",
            url: "http://localhost:8080/brand-demo/addServlet",
            data: formData   // Axios 自动将对象转为 JSON 字符串 
        }).then(function (resp) {
            if (resp.data == "success") {
                // 4. 添加成功,跳转到列表页 
                location.href = "http://localhost:8080/brand-demo/brand.html";
            }
        });
    };
</script>

关键点:request.getParameter() 适用于普通表单编码或 URL 参数,对于 JSON 请求体必须通过 request.getReader() 手动解析

总结

通过本文的实践,我们掌握了以下核心技术:

  • AJAX 基础:理解同步与异步的区别,掌握原生 XMLHttpRequest 的发送与响应处理。
  • Axios 框架:极大简化异步请求代码,支持 GET/POST 及别名调用,内置 JSON 自动序列化。
  • JSON 数据格式:前后端分离的数据交换标准,学会在 JS 和 Java 中互相转换(Fastjson)。
  • 实战案例:从零实现用户名唯一性校验、品牌列表查询与新增,打通前后端完整交互链路。

这些内容是 JavaWeb 前后端分离开发的基石,也是后续学习 Vue、React 等现代前端框架的重要前置知识。希望读者能结合代码多加练习,夯实基本功。

vivado Block Design 设计 .tcl 文件使用,导出,修改,添加方式 在vivado中生成 Block Design可以导出tcl文件进行保存(体积小),或者在别的版本vivado中打开(版本互通),这是一个非常好的功能。另外GitHub中很多项目都是采用这种方式上传的,学会如何使用可以快速修改历程项目。 阅读详情

相关推荐

小米路由器R1D进阶玩法:MIXBOX工具箱安装与插件管理指南

本文详细介绍了为小米路由器R1D安装MIXBOX工具箱的完整指南。通过开启SSH、执行一键安装脚本,用户可以轻松解锁路由器的进阶功能,如安装离线下载、内网穿透等插件,从而将旧设备转变为强大的家庭网络服务中心。

weixin_29292431的博客 1114

10个非常棒的Ajax及Javascript实例资源网站

 向大家推荐10个相当棒的Ajax和Javascript国外资源网站或博客,它们提供了相当多的高质量Ajax、Javascript实例及教程,喜欢Ajax和Javascript的朋友绝对不能错过。 1.Ajax Rain   AjaxRain有很多完美整合AJAX, CSS, DHTML 或 Javascript的实例,有一些Demo的确值得你去看一看,即使你不是网页设计(开发)师。   Aja...

bluedusk 301

SAGA GIS英文版进行地形分析,计算常用的地形因子等

SAGA GIS中文版是一款专业的自动化地球科学分析系统软件。SAGA GIS最新版界面简洁,操作简便,用户使用时输入要分割的影像,选择要计算特征的影像或者波段,设置越大,得到的斑块越大;反之,则越小,点击Okay,得到分割影像图。SAGA GIS中文版主要通过选择适合你影像的格式,加载影像。 SAGA GIS全称是System for Automated Geoscientific Analyses,是一种用于编辑空间数据的地理信息系统(GIS)计算机程序,它是免费的开源软件,SAGA GIS旨在为科学家

qq_35794085的博客 5642

Ajax网站大全--经典应用

<!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--><script type="text/javascript"

zgqtxwd的专栏 4964

lammps案例:热导率模拟案例讲解(NEMD方法)

lammps计算热导率大体可以分为三种方法:EMD、NEMD、rNEMD。 本文介绍非平衡模拟(NEMD)热导率的计算方法。 NEMD下热导率计算公式为: k=dQ*dZ/dt k:热导率 dQ:能量通量。 dT/dZ:温度梯度。 非平衡态下计算热导率的原理是在材料的两端或者中间设置热源和冷源。 在热源输入热量,在冷源抽取等量的热量,在这个过程中计算材料内部会有热量的传递,产生温度梯度。 在lammps模拟中得到能量通量和温度梯度,代入公式即可求得热导率。 热量的输入方式有多种,如fix langevin

lammps_jiayou的博客 1万+

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0

Win10 系统下VisualStudio2022 配置点云库 PCL1.13.0与Win10 系统下 VisualStudio2019 配置点云库 PCL1.11.1流程基本相同,主要区别有两点: * 从PCL1.12.0版本开始需要进行`启用增强指令集`的设置。 * 附加依赖项添加的内容不同。

点云侠的博客 7006

静态网站,动态网站,应用ajax技术的网站

静态网站,动态网站,应用ajax技术的网站,简单理解三者以及区别

Acmera-播客分享 2105

海洋捕食者算法(MPA)详解:从海洋生态智慧到高性能优化

摘要: 海洋捕食者算法(MPA)是一种基于海洋生态觅食行为的元启发式优化算法,模拟捕食者(如鲨鱼)的布朗运动和莱维飞行策略进行全局与局部搜索。算法分为三阶段:高速比阶段(全局探索)、单位速度比阶段(平衡搜索)和低速比阶段(局部开发),通过精英矩阵和FADs效应(概率扰动)避免早熟收敛。MPA具有参数少、收敛快、寻优能力强等特点,适用于复杂优化问题,其数学模型将生物行为转化为随机游走与自适应策略,并通过收敛因子动态调整探索-开发平衡。实验表明,MPA在多个基准问题上表现优异。

qq_42212808的博客 273

介绍几个AJAX的网站

一、JavaScript Frameworkhttp://prototype.conio.net/二、Ruby on Railshttp://www.rubyonrails.com/三、script.aculo.ushttp://script.aculo.us/四、Ricohttp://openrico.org/五、Behaviourhttp://www.rip

s00n的桃花园 9757

QGis软件 —— 9、QGis - 由点绘制热力图来模拟人流量(绘制点方式、excel导入数据方式)

QGis软件 —— 9、QGis - 由点绘制热力图来模拟人流量(绘制点方式、excel导入数据方式)

1470

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS)

【华为OD机试真题 新系统】1010、魔法阵的能量收集 | 机试真题+思路参考+代码解析(C++、Java、Py、C语言、JS) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2026e卷,od机试,2026E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2026华为od,如何备战华为

KJ.JK 1072

经典收藏:Ajax学习网址大全

一.资源类网站1,国内网站1)Ajax中国(推荐)一个专业的ajax技术网站,分类清晰,有大量的电子版教程,以及AJAX源码下载! www.okajax.com2)ajaxcn.org李琨老师的blog。李琨:《ajax实战》译者.www.ajaxcn.org-----------------------------------------2,国外网站1)、Ajax 的诞生Ajax: A New 

f9inux的专栏 1627

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

【JavaWeb】一篇承载Ajax、Axios、Json的学习笔记~

概念:ajax(AJavascriptAndXML):异步的JavaScript和Xml。

游坦之的博客 1750

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

JavaWeb基础8——Filter,Listener,Ajax,Axios,JSON

Filter过滤器、Listener监听器、AJAX、 同步、异步优点和使用场景、Axios异步框架、JSON、js和JSON转换、案例,Axios + JSON 品牌列表查询和添加

种一棵树最好的时间是十年前,其次是现在 4696

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【JavaWeb】Ajax,Axios,JSON

文章目录1. Ajax1.1 概述1.2 作用1.3 同步和异步1.4 Ajax快速入门2. Axios2.1 Axios基本使用2.2 Axios快速入门2.2.1 服务端实现2.2.2 客户端实现3. JSON3.1 概述3.2 JSON基础语法3.3 JSON与Java对象相互转换3.3.1 Fastjson 概述3.3.2 Fastjson使用3.3.3 代码实现 1. Ajax 1.1 概述 AJAX (Asynchronous JavaScript And XML):异步的 JavaScr

一个正在努力学习的iter 1525

JavaWeb之AJAX,axios,JSON格式的jar包使用

(Asynchronous JavaScript And XML):异步的 JavaScript 和 XML。我们先来说概念中的 和 , 表明该技术和前端相关; 是指以此进行数据交换。而这两个我们之前都学习过。AJAX 作用有以下两方面:与服务器进行数据交换:通过AJAX可以给服务器发送请求,服务器将数据直接响应回给浏览器。如下图 我们先来看之前做功能的流程,如下图: 如上图, 调用完业务逻辑层后将数据存储到域对象中,然后跳转到指定的 页面,在页面上使用 和 标签库进行数据的展示。而我们学习了AJ

xrkhy的博客 621

JavaWEB13:Filter、Listener、Ajax、Axios、JSON

Filter&Listener&Ajax 今日目标: 能够使用 Filter 完成登陆状态校验功能 能够使用 axios 发送 ajax 请求 熟悉 json 格式,并能使用 Fastjson 完成 java 对象和 json 串的相互转换 使用 axios + json 完成综合案例 1,Filter 1.1 Filter概述 Filter 表示过滤器,是 JavaWeb 三大组件(Servlet、Filter、Listener)之一。Servlet 我们之前都已经学习过了,Fi

XXXZhy丶Blog 1659

Javaweb之AJAX axios JSON

AJAX我们先来说概念中的JavaScript和XMLJavaScript表明该技术和前端相关;XML是指以此进行数据交换。而这两个我们之前都学习过。

lpblog的博客 783

JavaWeb前后端交互实战:AJAX、Axios与JSON链路详解

在现代Web开发中,异步通信与数据交换是前后端协作的基础。AJAX作为浏览器端异步请求的核心机制,让页面无需整体刷新即可获取数据;JSON凭借其轻量、跨语言、可读性高的特点,成为前后端通用的数据交换语言;而Axios则基于Promise对原生请求进行了优雅封装,极大地提升了接口调用效率。理解这三者的职责边界与协同原理,是解决接口联调、乱码、跨域等工程问题前提。本文从基础概念出发,结合JavaWeb工程实践,通过Servlet与Axios的完整案例,演示从前端发起请求、后端处理响应到数据渲染的全过程,并给出常

weixin_31742871的博客 286

javaweb Ajax AXios异步框架 JSON 案例

通过AJAX可以给服务器发送请求,并获取服务器响应的数据使用了AJAX和服务器进行通信,就可以使用 HTML+AJAX来替换JSP页面了可以在,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等…

m0_73859807的博客 831

AJAX和JSON

JSON(JavaScript Object Notation,JavaScript 对象表示法)是一种基于字符串的轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。JSON 是 JavaScript 数据类型的子集。

2401_85217463的博客 1630

JavaWeb之AJAX

以前我们在servlet中得到数据,必须通过域给jsp,然后jsp在响应给浏览器纯html不能获取servlet返回数据所以我们用jsp但是现在我们可以同AJAX给返回数据了我们可以在sevlet中直接通过AJAX返回给浏览器html中的JavaScript就可以获取数据了通过静态的html页面和AJAX联合起来,这个比较主流这样html和AJAX主要由前端来完成就可以了后面的我们后端来完成因为jsp要由服务器启动,所以还是要后端来写,无法分工。

ck的博客 1188

JavaWeb --- AJAX、Axios、JSON

AJAX(Asynchronous JavaScript And XML):异步的JavaScript和XML1、Ajax = 异步 JavaScript 和XML2、Ajax是一种用于创建快速动态网页的技术3、通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新4、传统的网页(不使用 Ajax)如果需要更新内容,必需重载整个网页面。

乌云的博客 613

小黑子—JavaWeb:第六章 - Filter、Listener、AJAX与JSON

黑马javaweb 134 - 145

VanWot的博客 1074

Filter、AJAX、Axios、JSON快速入门

Filter 概念:Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。 过滤器可以把资源的请求拦截下来,从而实现一些特殊的功能。 过滤器一般完成一些通用的操作,比如:权限控制、统一编码处理、敏感字符处理等等... Filter快速入门 (1)定义类,实现Filter接口,并重写其所有方法 (2)配置Filter拦截资源的路径:在类上定义@WebFilter注释 (3)在doFilter方法中输出一句话,并放行 Filter执行流程: (1)放行

qq_41476257的博客 757

Javaweb(Filter、Listener、AJAX、JSON)

异步的 JavaScript 和 XMLAJAX作用:1.与服务器进行数据交换:通过AJAX可以给服务器发送请求,并获取服务器响应的数据使用了AJAX和服务器进行通信,就可以使用HTML+AJAX来替换JSP页面了2.异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:搜索联想、用户名是否可用校验,等等...同步和异步。

2501_94455816的博客 461
上一篇: JavaWeb快速入门: Filter与Listener核心详解
下一篇: JavaWeb快速入门:基于MyBatis综合案例环境搭建与查询所有功能实现
Wang's Blog
博客等级 码龄12年 7418粉丝 2407原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值