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日

相关文章

  • springcloud config配置读取优先级过程详解

    Spring Cloud Config 配置读取优先级过程详解 Spring Cloud Config 是 Spring Cloud 生态系统中非常重要的一个子项目。其提供了一种分布式系统中的外部化配置解决方案,让应用程序的配置信息统一存储在一个中心化的配置中心,并且实现了配置的版本管理和追踪,为更好地进行微服务治理提供了基础支持。 在使用 Spring C…

    Java 2023年5月19日
    00
  • SpringMVC文件上传原理及实现过程解析

    SpringMVC文件上传原理解析 在SpringMVC文件上传时,客户端向服务器发送文件,SpringMVC通过MultipartResolver对请求进行处理,解析出其中的文件,并将文件保存到指定的位置。MultipartResolver是一个接口,SpringMVC提供了两种实现方式: StandardServletMultipartResolver:…

    Java 2023年6月16日
    00
  • Java实现的对称加密算法AES定义与用法详解

    Java实现的对称加密算法AES定义与用法详解 什么是对称加密算法的AES 对称加密算法是一种能将数据加密成乱码,只有拥有密钥的人才能解密的算法。其中AES就是对称加密算法中的一种。 AES的全称是高级加密标准(Advanced Encryption Standard),是一种经过多方评审的加密算法,是一种区块加密标准算法,具有高度的安全性和实用性。该算法用…

    Java 2023年5月19日
    00
  • 在(ASP/PHP/JSP/html/js)中禁止ajax缓存的方法集锦

    在ASP、PHP、JSP、HTML、JS中,我们可以采用不同的方式来禁止AJAX缓存。以下是几种常用方法: 在ASP中禁止AJAX缓存 在ASP中,我们可以在页面头部添加以下代码来禁止AJAX缓存: <% Response.AppendHeader "Cache-Control", "no-cache" Resp…

    Java 2023年6月15日
    00
  • jQuery实现在列表的首行添加数据

    下面是详细的jQuery实现在列表的首行添加数据的完整攻略。 过程概述 实现在列表的首行添加数据,可以通过以下步骤完成: 使用jQuery选择器选中列表的第一个元素; 创建需要添加的数据的HTML代码; 使用jQuery的插入方法在第一个元素前插入新增数据。 代码实现 示例 1 在列表首行插入一条文本数据: // 获取列表的第一个元素 var $firstI…

    Java 2023年6月16日
    00
  • Java计时新姿势StopWatch详解

    Java计时新姿势StopWatch详解 在Java应用程序中,需要对部分代码块的执行时间进行计时,以便进行性能优化和代码调试。在Java中有多种计时方式,其中一个使用较为广泛且方便的库就是StopWatch。 StopWatch简介 StopWatch是Spring框架中的一个计时器工具类,其原理是基于System.currentTimeMillis(),…

    Java 2023年5月20日
    00
  • SpringMVC中使用@PathVariable绑定路由中的数组的方法

    SpringMVC中使用@PathVariable绑定路由中的数组的方法 在SpringMVC中,我们可以使用@PathVariable注解将路由中的参数绑定到方法的参数上。如果路由中的参数是一个数组,我们可以使用@PathVariable注解来绑定它。本文将详细讲解SpringMVC中使用@PathVariable绑定路由中的数组的方法。 1. 绑定路由中…

    Java 2023年5月18日
    00
  • springboot项目完整后端请求Controller层优雅处理

    那么我们先从介绍Spring Boot项目完整后端请求Controller层处理的一般流程开始: 了解请求方式:HTTP协议定义了很多不同的请求方式,常规的包括GET、POST、PUT、DELETE等,我们需要根据具体的业务场景选择合适的请求方式。 定义API接口:在Controller层中,我们需要定义一组或多组API接口,这些接口对应于前端的具体请求,需…

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