前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Thymeleaf静态页面生成/Boot/Cloud

Thymeleaf静态页面生成/Boot/Cloud

作者头像
贫困的蚊子
发布2023-08-10 12:02:24
1650
发布2023-08-10 12:02:24
举报
文章被收录于专栏:贫困的蚊子贫困的蚊子

前言:

Thymeleaf说白了,为了解决访问量过大,解决抗并发,为一些无需经常去数据库查询的东西生成 纯html静态的页面,如:登录/注册/商品详情

需要的依赖过多,openfeign,阿里的json等等,在报错过程中,可自行推算需要什么依赖,文章仅供参考

开始

主依赖

代码语言:javascript
复制
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>

resources

1.在resources新建templates文件夹,里面新建一个item用于存放生成的静态页面 2.item里面不需要放任何东西,外层的item.html系统会根据他生成页面,可以称为板子

image-1678956412569
image-1678956412569

```

application.yml

路径要换成你的路径 这个变量一会要获取一个值,他的作用是:告诉系统生成的静态文件放哪里

代码语言:javascript
复制
pagePath: C:\Users\yy\Desktop\Th\th_test\src\main\resources\templates\item
image-1678956643309
image-1678956643309

页面数据

1.将需要放在页面的数据,封装成Map类型,然后将方法放入FeignClient里面

image-1678957068052
image-1678957068052

FeignClient里面

image-1678957259063
image-1678957259063

2.新建一个Service接口,放入两条方法 crehtml:生成html用的,我的crehtml是根据id查出数据 mp:根据id查的数据,存入Map里面

代码语言:javascript
复制
   void crehtml(String skuid) throws Exception;
    Map<String,Object> mp(String skuid);
image-1678957395566
image-1678957395566

3.新建一个impl类,继承刚才创建的类 具体说明看注释

代码语言:javascript
复制
package com.zb.service.impl;

import com.alibaba.fastjson.JSON;
import com.zb.client.TbSkuClient;
import com.zb.service.TyService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.io.File;
import java.io.PrintWriter;
import java.util.Map;

@Service
public class Ty implements TyService {

    //生成页面必须用
    @Autowired
    private TemplateEngine template;

    //自已FeignClient
    @Autowired
    private TbSkuClient fff;

    //获取yml写好的静态页面存储的地址
    @Value("${pagePath}")
    private String pagePath;


    @Override
    public Map<String, Object> mp(String skuid) {

        //如果你的数据库没有json数据类型,只需要写下面一行即可
        Map<String, Object> okinfo = fff.okinfo(skuid);
        
        //我的图片在数据库存储是json类型
        //所以需要获取父节点-子节点,然后转换一下,然后在存入okinfo(上面代码)的Map里面
        Map<String, Object> sku = (Map<String, Object>) okinfo.get("sku");
        String images = sku.get("images").toString();
        Map map666 = JSON.parseObject(images, Map.class);
        okinfo.put("map666",map666);

        
        return okinfo;
    }


    @Override
    public void crehtml(String skuid) throws Exception {
        Context cc = new Context();
        //将查询的方法放入程序上下文
        cc.setVariables(this.mp(skuid));
        File file = new File(pagePath);
        //判断文件夹是否存在
        if(!file.exists()){
          file.mkdirs();
        }

        //设置生成静态文件的格式,我的是传入的id+.html
        File ff2 = new File(file,skuid+".html");
        //数字成静态文件的编码
        PrintWriter printWriter = new PrintWriter(ff2,"UTF-8");
        //执行操作
        template.process("item",cc,printWriter);

    }


}

启动类

代码语言:javascript
复制
package com.zb;

import com.zb.service.TyService;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.ConfigurableApplicationContext;

@SpringBootApplication
@EnableFeignClients
public class GoodsApplication {
    public static void main(String[] args) throws Exception {

        ConfigurableApplicationContext run = SpringApplication.run(GoodsApplication.class, args);
        TyService pageService = run.getBean(TyService.class);
        
        //调取创建html方法,传入id进行生成,因为生成的名字是id+.html
        //程序一启动就会在resources/templates/item/里面生成静态文件
        pageService.crehtml("100000003145");

    }
}

页面使用

具体使用方法可以去网上找下 这里提供一个地址:https://www.cnblogs.com/jnba/p/10832878.html

1.只需要在板子的html里面填写相对应的变量,即可

image-1678958079201
image-1678958079201

2.变量值是封装成Map类型返回json数据里面的一些东西

image-1678958234487
image-1678958234487

恭喜你,一切都已完成

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2023-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言:
  • 开始
    • 主依赖
      • resources
        • application.yml
          • 页面数据
            • 启动类
              • 页面使用
              相关产品与服务
              数据库
              云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档