SpringBoot如何用java生成静态html

要用Java生成静态HTML,可以使用SpringBoot框架中的Thymeleaf模板引擎和SpringBoot内置的静态资源处理器,下面是详细的步骤:

1. 导入依赖

将以下依赖加入到pom.xml文件中:

<dependencies>
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Thymeleaf -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId>
    </dependency>
</dependencies>

2. 创建Controller

创建一个Controller类,例如:

@Controller
public class HtmlGeneratorController {

    @Autowired
    private ProductService productService;

    @RequestMapping(value = "/products", method = RequestMethod.GET)
    public String generateProductHtml(Model model) {
        List<Product> products = productService.getAllProducts();
        model.addAttribute("products", products);
        return "products";
    }
}

当访问/products时,将会调用generateProductHtml方法,查询所有产品数据并通过Model对象传递给Thymeleaf模板引擎。

3. 创建Thymeleaf模板文件

在src/main/resources/templates目录下创建products.html文件,例如:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Product List</title>
</head>
<body>
<table>
    <thead>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Price</th>
    </tr>
    </thead>
    <tbody>
    <tr th:each="product : ${products}">
        <td th:text="${product.id}"></td>
        <td th:text="${product.name}"></td>
        <td th:text="${product.price}"></td>
    </tr>
    </tbody>
</table>
</body>
</html>

该模板文件定义了一个HTML表格,使用了Thymeleaf的循环语法th:each来渲染产品数据。

4. 设置静态资源路径

在application.properties文件中,设置静态资源路径为static目录,例如:

spring.resources.static-locations=classpath:/static/

5. 生成静态HTML

打开控制台,使用curl或者浏览器来请求/products接口,例如:

curl http://localhost:8080/products -o products.html

或者在浏览器中访问http://localhost:8080/products,并保存HTML源文件。

此时会在项目的根目录下生成一个名为products.html的静态HTML文件,其中包含了从数据库中查询出来的产品数据。

示例1

假设现在我们有一个Hero类:

public class Hero {
    private Long id;
    private String name;
    private String title;
    private Integer price;
    private Integer damage;
    // 省略getter和setter
}

我们需要针对该实体类生成静态HTML页面,显示所有英雄数据。在这种情况下,我们需要重新编写前面提到的步骤中的第二和第三步。

首先,我们需要创建一个HeroController类:

@Controller
public class HeroController {

    @Autowired
    private HeroService heroService;

    @RequestMapping(value = "/heroes", method = RequestMethod.GET)
    public String generateHeroHtml(Model model) {
        List<Hero> heroes = heroService.getAllHeroes();
        model.addAttribute("heroes", heroes);
        return "heroes";
    }
}

然后,我们需要创建一个名为heroes.html的模板文件:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Hero List</title>
</head>
<body>
<table>
    <thead>
    <tr>
        <th>ID</th>
        <th>Name</th>
        <th>Title</th>
        <th>Price</th>
        <th>Damage</th>
    </tr>
    </thead>
    <tbody>
    <tr th:each="hero : ${heroes}">
        <td th:text="${hero.id}"></td>
        <td th:text="${hero.name}"></td>
        <td th:text="${hero.title}"></td>
        <td th:text="${hero.price}"></td>
        <td th:text="${hero.damage}"></td>
    </tr>
    </tbody>
</table>
</body>
</html>

接下来,我们只需要使用上面提到的命令生成静态HTML文件:

curl http://localhost:8080/heroes -o heroes.html

示例2

假设我们需要生成一个动态的导航菜单,菜单项的名称和URL是从数据库中读取的,我们可以如下实现:

首先,我们需要创建一个NavMenuController类:

@Controller
public class NavMenuController {

    @Autowired
    private NavMenuService navMenuService;

    @RequestMapping(value = "/navMenu", method = RequestMethod.GET)
    public String generateNavMenuHtml(Model model) {
        List<NavMenu> navMenus = navMenuService.getAllNavMenus();
        model.addAttribute("navMenus", navMenus);
        return "navMenu";
    }
}

然后,我们需要创建一个名为navMenu.html的模板文件:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Navigation Menu</title>
</head>
<body>
<ul>
    <li th:each="navMenu : ${navMenus}">
        <a th:href="${navMenu.url}" th:text="${navMenu.name}"></a>
    </li>
</ul>
</body>
</html>

然后,我们只需要使用上面提到的命令生成静态HTML文件:

curl http://localhost:8080/navMenu -o navMenu.html

以上就是使用SpringBoot如何用Java生成静态HTML的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot如何用java生成静态html - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Java生成压缩文件的实例代码

    生成压缩文件是编程中常见的功能之一,Java在java.util.zip包下提供了ZipOutputStream和ZipEntry类,可以方便地生成zip压缩文件。本文分享Java生成压缩文件的实例代码。 1. 导入相关类 import java.io.File; import java.io.FileInputStream; import java.io.…

    Java 2023年5月26日
    00
  • 浅析Mybatis Plus和Mybatis的区别

    下面就来详细讲解 “浅析Mybatis Plus和Mybatis的区别”的完整攻略。 什么是Mybatis? Mybatis 是一款基于 Java 的持久层框架,它封装了 JDBC 操作,简化了 JDBC 操作繁琐的过程,使得开发者能够将精力集中到 SQL 的编写上面。 Mybatis 的特点: 操作简单、方便,对开发者友好 灵活度高,可以定制化 SQL 提…

    Java 2023年5月20日
    00
  • JavaScript实现图片倒影效果 – reflex.js

    下面我将详细讲解“JavaScript实现图片倒影效果 – reflex.js”的完整攻略。 介绍 reflex.js是一个用于实现图片倒影效果的JavaScript插件。使用reflex.js,您可以很容易地在网页中添加图片倒影效果。 步骤 步骤一:加入源代码 要使用reflex.js,您需要将它的源代码(可以在GitHub上下载)加入到您的网页中。您可以…

    Java 2023年6月15日
    00
  • SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)问题

    下面是SpringBoot2.0.3打印默认数据源为HikariDataSource(null)问题的完整攻略。 问题描述 在使用SpringBoot2.0.3版本时,如果使用了默认的数据源,会在启动程序时输出类似于“SpringBoot2.0.3打印默认数据源为 HikariDataSource (null)”的提示信息,其中null在不同的操作系统和环境…

    Java 2023年5月20日
    00
  • Java Calendar日历类的使用介绍

    当我们需要对日期进行计算时,Java中的Calendar类就变得很有用了。本文将介绍如何使用Calendar类进行日期的相关操作。 什么是Calendar类 Calendar是Java日期时间的中心类。它提供了查询日期、时间、周等日历字段(如YEAR、MONTH、DAY_OF_MONTH、HOUR)以及将时间转换为指定格式的方法。底层实现是Gregorian…

    Java 2023年5月20日
    00
  • SpringData @Query和@Modifying注解原理解析

    当使用Spring Data JPA进行数据库操作时,我们可能需要对一些自定义查询进行优化。Spring Data提供了@Query和@Modifying注解来支持这种自定义查询操作。 @Query注解 @Query注解可以被使用在repository接口的方法上,它可以用于定义一个自定义的查询语句。 Spring Data JPA将@Query注解和方法的…

    Java 2023年5月20日
    00
  • Maven项目中resources配置总结

    下面我将详细讲解“Maven项目中resources配置总结”的完整攻略。 一、resources配置概述 在 Maven 中,main 目录中的 resources 目录代表应用程序 resources 路径,resources 目录下的内容会被打包进最终的 JAR 或 WAR 包中,因此在项目中需要合理地进行 resources 的管理。 二、resou…

    Java 2023年5月20日
    00
  • 如何保证线程安全?

    要保证线程安全,需要考虑并发情况下各线程间对共享数据的访问问题,下面是常见的几种保证线程安全的方式: 1. 使用锁 使用锁是常见的保证线程安全的方式。Java中提供了ReentrantLock和synchronized关键字作为锁的实现。使用锁时,需要对共享资源进行加锁,确保同一时刻只有一个线程能够访问这个资源,其他线程需要等待。待访问结束后再释放锁。 示例…

    Java 2023年5月10日
    00
合作推广
合作推广
分享本页
返回顶部