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