使用Spring Boot框架来生成HTML页面并返回给客户端

文章目录

      • [1. 创建Spring Boot项目](#1. 创建Spring Boot项目)
        • [1.1 项目结构](#1.1 项目结构)
      • [2. 配置 `pom.xml`](#2. 配置 pom.xml)
      • [3. 编写代码](#3. 编写代码)
        • [3.1 创建主应用程序类](#3.1 创建主应用程序类)
        • [3.2 创建数据模型](#3.2 创建数据模型)
        • [3.3 创建数据仓库](#3.3 创建数据仓库)
        • [3.4 创建控制器](#3.4 创建控制器)
        • [3.5 创建HTML模板](#3.5 创建HTML模板)
      • [4. 运行应用程序](#4. 运行应用程序)
      • 总结

下面是一个简单的Java实现,使用Spring Boot框架来生成HTML页面并返回给客户端。

1. 创建Spring Boot项目

首先,确保你已经安装了Java和Maven。然后创建一个新的Spring Boot项目。

1.1 项目结构
复制代码
myapp
├── src
│   ├── main
│   │   ├── java
│   │   │   └── com
│   │   │       └── example
│   │   │           └── myapp
│   │   │               ├── MyAppApplication.java
│   │   │               ├── controller
│   │   │               │   └── ListController.java
│   │   │               ├── model
│   │   │               │   └── DataItem.java
│   │   │               └── repository
│   │   │                   └── DataRepository.java
│   │   └── resources
│   │       ├── application.properties
│   │       └── templates
│   │           └── list.html
├── mvnw
├── mvnw.cmd
└── pom.xml

2. 配置 pom.xml

pom.xml中添加必要的依赖:

xml 复制代码
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.example</groupId>
    <artifactId>myapp</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.2</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

3. 编写代码

3.1 创建主应用程序类

MyAppApplication.java

java 复制代码
package com.example.myapp;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class MyAppApplication {

    public static void main(String[] args) {
        SpringApplication.run(MyAppApplication.class, args);
    }
}
3.2 创建数据模型

DataItem.java

java 复制代码
package com.example.myapp.model;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class DataItem {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String name;
    private String value;

    // Constructors, getters, setters
    public DataItem() {}

    public DataItem(String name, String value) {
        this.name = name;
        this.value = value;
    }

    public Long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
3.3 创建数据仓库

DataRepository.java

java 复制代码
package com.example.myapp.repository;

import com.example.myapp.model.DataItem;
import org.springframework.data.jpa.repository.JpaRepository;

public interface DataRepository extends JpaRepository<DataItem, Long> {
}
3.4 创建控制器

ListController.java

java 复制代码
package com.example.myapp.controller;

import com.example.myapp.model.DataItem;
import com.example.myapp.repository.DataRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.List;

@Controller
public class ListController {

    @Autowired
    private DataRepository dataRepository;

    @GetMapping("/list")
    public String listView(Model model) {
        List<DataItem> data = dataRepository.findAll();
        model.addAttribute("data", data);
        return "list";
    }
}
3.5 创建HTML模板

src/main/resources/templates目录下创建list.html

html 复制代码
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Data List</title>
</head>
<body>
    <h1>Data List</h1>
    <table>
        <thead>
            <tr>
                <th>ID</th>
                <th>Name</th>
                <th>Value</th>
            </tr>
        </thead>
        <tbody>
            <tr th:each="item : ${data}">
                <td th:text="${item.id}"></td>
                <td th:text="${item.name}"></td>
                <td th:text="${item.value}"></td>
            </tr>
        </tbody>
    </table>
</body>
</html>

4. 运行应用程序

在项目根目录下运行以下命令:

bash 复制代码
mvn spring-boot:run

然后在浏览器中访问http://localhost:8080/list即可查看生成的HTML页面。

总结

这种方案利用Spring Boot在服务器端生成HTML页面并返回给客户端,隐藏了后端的接口,有助于提高安全性,但也带来了性能和灵活性方面的挑战。具体实施时需权衡利弊,选择合适的技术方案。

相关推荐
Bruce_Liuxiaowei2 分钟前
基于Flask的DeepSeek~学术研究领域智能辅助系统设计与实现
后端·python·flask·deepseek
Swift社区12 分钟前
轻松搞定!Mac 用户的 ESP-IDF 安装全攻略
python·嵌入式
学c真好玩24 分钟前
4.3python操作ppt
开发语言·python·powerpoint
穿林鸟43 分钟前
Spring Boot项目信创国产化适配指南
java·spring boot·后端
伏游1 小时前
【BUG】生产环境死锁问题定位排查解决全过程
服务器·数据库·spring boot·后端·postgresql·bug
巷北夜未央1 小时前
数据结构之二叉树Python版
开发语言·数据结构·python
wapicn991 小时前
手机归属地查询Api接口,数据准确可靠
java·python·智能手机·php
爱的叹息2 小时前
SpringBoot集成Redis 灵活使用 TypedTuple 和 DefaultTypedTuple 实现 Redis ZSet 的复杂操作
spring boot·redis·bootstrap
郝YH是人间理想2 小时前
OpenCV基础——傅里叶变换、角点检测
开发语言·图像处理·人工智能·python·opencv·计算机视觉
白白糖2 小时前
二叉树 递归
python·算法·力扣