使用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页面并返回给客户端,隐藏了后端的接口,有助于提高安全性,但也带来了性能和灵活性方面的挑战。具体实施时需权衡利弊,选择合适的技术方案。

相关推荐
FIN技术铺37 分钟前
Spring Boot框架Starter组件整理
java·spring boot·后端
FØund40442 分钟前
antd form.setFieldsValue问题总结
前端·react.js·typescript·html
好看资源平台1 小时前
网络爬虫——综合实战项目:多平台房源信息采集与分析系统
爬虫·python
一棵开花的树,枝芽无限靠近你1 小时前
【PPTist】添加PPT模版
前端·学习·编辑器·html
小码的头发丝、1 小时前
Spring Boot 注解
java·spring boot
午觉千万别睡过1 小时前
RuoYI分页不准确问题解决
spring boot
进击的六角龙1 小时前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂1 小时前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
2301_811274311 小时前
大数据基于Spring Boot的化妆品推荐系统的设计与实现
大数据·spring boot·后端
湫ccc1 小时前
Python简介以及解释器安装(保姆级教学)
开发语言·python