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

相关推荐
梧桐树04293 小时前
python常用内建模块:collections
python
Dream_Snowar3 小时前
速通Python 第三节
开发语言·python
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭3 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
蓝天星空4 小时前
Python调用open ai接口
人工智能·python
jasmine s4 小时前
Pandas
开发语言·python
郭wes代码4 小时前
Cmd命令大全(万字详细版)
python·算法·小程序
leaf_leaves_leaf4 小时前
win11用一条命令给anaconda环境安装GPU版本pytorch,并检查是否为GPU版本
人工智能·pytorch·python
夜雨飘零14 小时前
基于Pytorch实现的说话人日志(说话人分离)
人工智能·pytorch·python·声纹识别·说话人分离·说话人日志
404NooFound5 小时前
Python轻量级NoSQL数据库TinyDB
开发语言·python·nosql
天天要nx5 小时前
D102【python 接口自动化学习】- pytest进阶之fixture用法
python·pytest