JavaWeb开发:HTML 页面与接口对接

在现代 Web 开发中,前后端分离的架构越来越普遍,通常需要通过 API 接口从后端获取数据,然后在前端页面展示这些数据。这篇博客将会向你展示,在 JavaWeb 开发中,如何通过 AJAX 请求接口来获取图书信息,并将这些信息动态展示在 HTML 页面中,以实现接口与页面对接的功能。

一、项目背景

假设我们有一个图书管理系统,其中后端提供了一个 API 接口,返回当前系统中所有图书的信息,数据格式如下:

复制代码
[
  {"id": 1, "title": "Java 编程思想", "author": "Bruce Eckel", "publishDate": "2015-05-01", "genre": "计算机"},
  {"id": 2, "title": "Python 核心编程", "author": "Wesley Chun", "publishDate": "2018-08-10", "genre": "计算机"},
  {"id": 3, "title": "数据结构与算法", "author": "Robert Lafore", "publishDate": "2013-06-15", "genre": "教育"}
]

我们需要将这些图书的信息展示在前端页面中,每本书的详情都包括书名、作者、出版日期和类型。我们会利用前端 JavaScript 来实现这一点,结合 AJAX 技术从后端接口获取数据,并在页面上动态展示。

二、后端接口实现

我们首先实现一个简单的 Controller 类来模拟后端接口,这里使用的是 Spring MVC 框架:

java 复制代码
package cn.controller;

import cn.entity.Book;
import cn.service.BookService;
import com.alibaba.fastjson.JSONArray;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import java.util.List;

@Controller
public class BookController {

    @Resource
    private BookService bookService;

    @ResponseBody
    @RequestMapping(value = "/books.do", produces = "application/json;charset=UTF-8")
    public String getAllBooks() {
        List<Book> books = bookService.queryAllBooks();
        String jsonString = JSONArray.toJSONString(books);
        return jsonString;
    }
}
三、HTML 页面实现

接下来,我们在前端创建一个 HTML 页面,通过 AJAX 请求接口,并将返回的图书信息展示在页面中。以下是实现的代码:

html 复制代码
<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>图书列表</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        .book-card {
            border: 1px solid #ccc;
            padding: 10px;
            margin: 10px 0;
            border-radius: 5px;
            box-shadow: 0px 0px 5px #aaa;
        }
        .book-card h3 {
            margin: 0;
            padding-bottom: 5px;
            border-bottom: 1px solid #ccc;
        }
        .book-card p {
            margin: 5px 0;
        }
    </style>
</head>
<body>
    <h1>图书列表</h1>
    <div id="book-list">
        <template id="book-template">
            <div class="book-card">
                <h3>书名: </h3>
                <p>作者: </p>
                <p>出版日期: </p>
                <p>类型: </p>
            </div>
        </template>
    </div>

    <script type="text/javascript">
        $(document).ready(function () {
            // 使用 AJAX 请求后端接口
            $.ajax({
                url: "http://localhost:8080/SpringMvCWeb/books.do",
                type: "GET",
                dataType: "json",
                success: function (data) {
                    let bookTemplate = document.querySelector("#book-template").content;
                    let bookList = document.querySelector("#book-list");
                    
                    data.forEach(function (book) {
                        let clone = document.importNode(bookTemplate, true);
                        clone.querySelector("h3").textContent = `书名: ${book.title}`;
                        clone.querySelectorAll("p")[0].textContent = `作者: ${book.author}`;
                        clone.querySelectorAll("p")[1].textContent = `出版日期: ${book.publishDate}`;
                        clone.querySelectorAll("p")[2].textContent = `类型: ${book.genre}`;
                        
                        bookList.appendChild(clone);
                    });
                },
                error: function (error) {
                    console.log("获取图书列表失败", error);
                }
            });
        });
    </script>
</body>
</html>
四、实现原理分析
  1. 后端接口

    • 使用 Spring MVC 框架来创建一个 RESTful API,返回图书的 JSON 数据。
    • 数据通过 JSONArray.toJSONString(books) 进行序列化,确保返回的数据格式符合 JSON 标准。
  2. 前端页面

    • 页面中使用 <template> 标签来定义图书信息的模板,使 HTML 结构更加直观,且便于动态克隆。
    • 使用 JQuery 来发起 AJAX 请求,从后端获取数据后,将每一本书的信息填充到页面上。
  3. 样式设计

    • 为每一本图书使用一个卡片式的展示样式,使得信息展示更加美观整洁。
    • 利用 CSS 控制卡片的边框、阴影等,增强用户体验。
五、总结与扩展

通过上面的例子,我们可以看到接口与页面对接的完整流程,从后端提供接口,到前端 AJAX 调用,再到动态渲染页面。这样做不仅实现了前后端分离,还使得页面展示的数据更加动态和灵活。

这种方式非常适合展示类似于图书列表、用户列表等结构化的数据。未来你还可以进一步优化,例如:

  • 分页展示:当数据量较大时,加入分页功能,避免页面加载时间过长。
  • 搜索功能:为页面添加搜索框,允许用户根据书名或作者进行筛选。
  • 数据缓存:使用浏览器的本地存储技术缓存数据,减少对服务器的请求次数。

这些都是提升用户体验的重要手段。希望这篇博客能帮助你理解如何将后端接口与前端页面对接!

相关推荐
想用offer打牌34 分钟前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
崔庆才丨静觅1 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60612 小时前
完成前端时间处理的另一块版图
前端·github·web components
KYGALYX2 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了2 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅2 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅2 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
爬山算法3 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
崔庆才丨静觅3 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment3 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端