目录
2. 后端Servlet (UserServlet.java)
一. 关键概述
在Java Web开发中,AJAX(Asynchronous JavaScript and XML)是一种创建异步Web应用的技术,允许页面在不重新加载整个页面的情况下与服务器交换数据并更新部分页面内容。
二. 核心组件
-
前端:JavaScript(或jQuery)发送异步请求
-
后端:Java Servlet处理请求并返回数据(JSON/XML)
-
数据格式:JSON(主流)或XML
三. 工作原理
-
异步通信:XMLHttpRequest 或 Fetch API 发起非阻塞请求
-
后端处理:Servlet 接收请求 → 业务逻辑 → 生成结构化数据(JSON/XML)
-
动态更新:JavaScript 解析响应数据 → 操作 DOM 局部刷新
-
解耦架构:前后端通过 HTTP API 交互,后端专注数据处理,前端负责展示逻辑
四. 应用场景
-
表单验证(实时检查用户名是否已存在)
-
动态加载内容(无限滚动、分页)
-
自动完成功能
-
实时数据更新(股票价格、聊天应用)
五. 基础步骤(原生JS + Servlet)
1. 前端HTML/JS (index.html)
<!DOCTYPE html>
<html>
<head>
<title>Java AJAX 示例</title>
<script>
function loadData() {
// 1. 创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 2. 定义回调函数
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
// 6. 处理响应数据(JSON格式)
var data = JSON.parse(xhr.responseText);
document.getElementById("result").innerHTML =
"用户: " + data.name + "<br>邮箱: " + data.email;
}
};
// 3. 初始化请求
xhr.open("GET", "UserServlet", true); // true表示异步
// 4. 发送请求
xhr.send();
}
</script>
</head>
<body>
<h2>AJAX 示例</h2>
<button onclick="loadData()">加载用户数据</button>
<div id="result"></div>
</body>
</html>
2. 后端Servlet (UserServlet.java)
import java.io.*;
import javax.servlet.*;
import javax.servlet.annotation.*;
import javax.servlet.http.*;
import org.json.JSONObject; // 需要json库(如org.json)
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 设置响应类型为JSON
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
// 创建模拟数据
JSONObject json = new JSONObject();
json.put("name", "张三");
json.put("email", "zhangsan@example.com");
// 5. 返回JSON数据
response.getWriter().write(json.toString());
}
}
3.关键点说明
-
AJAX流程:
-
前端触发事件 → 创建XMLHttpRequest → 发送请求 → 后端处理 → 返回数据 → 前端更新DOM
-
-
响应状态:
-
readyState
:0(未初始化) → 1(连接建立) → 2(请求接收) → 3(处理中) → 4(完成) -
status
:HTTP状态码(200=成功)
-
-
数据格式选择:
-
JSON(推荐):轻量、易解析
-
XML:较复杂,但结构严谨
-
-
跨域问题:
-
若前端与后端不同源,需在Servlet添加CORS头:
response.setHeader("Access-Control-Allow-Origin", "*");
-
六. 总结归纳
前端JavaScript异步请求Java后端(Servlet),接收JSON/XML数据并动态更新页面,实现无刷新交互。
💡 本质:通过浏览器与服务器间的异步数据管道,打破传统Web应用的"请求-刷新"模式。