栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

使用thymeleaf实现静态化页面技术

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用thymeleaf实现静态化页面技术

静态化页面

程序先于用户获取资源或数据库数据进而通过静态化处理,生成一个静态页面,而用户直接请求获取该静态页面,静态化处理页面本身的访问速度较动态页面快很多倍,因此程序性能会有大大的提升。

静态化页面上的体现为:访问速度快,用户体验性明显提升;在后台体现为:访问脱离数据库,减轻了数据库访问的压力。

代码实现

1.首先添加thymeleaf的pom文件

        
            org.springframework.boot
            spring-boot-starter-thymeleaf
        

2.创建一个thymeleaf的html模板




    
    Title


    


3.在Service里实现代码

	public String createInformation(String data,String informationId) {
		if(StringUtil.isEmpty(data)){
			return null;
		}
		//创建一个正文
		Context context = new Context();

		String objectName = informationId + ".html";
		//对应模板数据
		context.setVariable("data",data);
		String information = templateEngine.process("Information", context);

		String url = null;
		InputStream inputStream = null;
		//转成二进制放到minio服务器
		try {
			inputStream = IOUtils.toInputStream(information);
			minioClient().putObject("hycloud",objectName,inputStream,"text/html");
			url = minioClient().getObjectUrl("hycloud",objectName);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}finally {
			try {
				inputStream.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return url;
		}
	}

4.前端获取url直接渲染静态页面即可

碰到的坑

问题一:

前端传带标签的html字符串时,特殊字符比如<、>等接收参数时会丢失,查了一下原因,大概是java在传递参数时,使用的编码方式对某些特殊字符不进行处理。

解决:将特殊字符进行转义,比如<转义成>等,接收完毕后在转义回去

使用的工具类是

StringEscapeUtils.unescapeHtml();

问题二:

打成jar包发布到服务器上(别问为什么,这公司就这样),出现Error resolving template template might not exist or might not be accessible的错误,大概就是找不到html模板文件。

查了一下,发现 servlet3.0有一个特性:

在servlet3.0协议规范中,包含在jar文件 /meta-INFO/resources/ 路径下的资源是可以直接访问的。也就是说其他文件下无法直接访问,要不就用流的方式读取文件。

/meta-INFO/resources 目录需要放在resources下

 重新打包发布接口测试成功

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/337221.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号