分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 技术分享

Velocity根据模版生成静态html

发布时间:2023-09-06 01:51责任编辑:赖小花关键词:暂无标签

  新公司的一个CMS项目要用到,这里记录下

一、项目文件图

二、springmvc-servlet.xml 添加

 <!-- 定义环境变量文件 --> ???<bean id="propertyHolder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> ???????<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/> ???????<property name="ignoreResourceNotFound" value="true"/> ???????<property name="locations"> ???????????<list> ???????????????<value>classpath*:/*.properties</value> ???????????</list> ???????</property> ???</bean>

三、html_template.vm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html> ???<head> ???????<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> ???????<title>${list.title}</title> ???</head> ???<body> ???????<h2>${list.title}</h2> ???????<table border="1" style="margin-left: 100px" > ???????????<tr> ???????????????<th class="jobs-time">序号</th> ???????????????<th class="jobs-title">名称</th> ???????????????<th class="jobs-title">mobileNo</th> ???????????????<th class="jobs-title">email</th> ???????????</tr> ???????????#if($!list) ???????????????<tr> ???????????????????<td>${list.userId}</td> ???????????????????<td>${list.userName}</td> ???????????????????<td>${list.mobile}</td> ???????????????????<td>${list.email}</td> ???????????????</tr> ???????????#end ???????</table> ???</body></html>

四、控制器

package com.geenk.web.controller.generatehtml;import com.geenk.web.velocity_engine.GenerateHtmlUtil;import org.springframework.beans.factory.annotation.Value;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.ResponseBody;import java.util.HashMap;import java.util.Map;/** * @author DUCHONG * @since 2018-04-28 18:51 **/@Controllerpublic class GenerateController { ???@Value("${filePath}") ???private String filePath; ???@Value("${templatePath}") ???private String templatePath; ???@ResponseBody ???@RequestMapping(value = "/html",method = RequestMethod.GET) ???public String generateHtml(){ ???????//一般这里是数据库查出的记录的list,然后遍历list,逐个生成html,存放路径,一般是取 "配置+表字段值",作为存放的路径 ???????//这里用for代替 ???????for(int i=1;i<10;i++){ ???????????//页面要展示的数据 ???????????Map<String,Object> map=new HashMap<>(); ???????????map.put("title","news"+i); ???????????map.put("userId",i); ???????????map.put("userName","test"+i); ???????????map.put("mobile","18106519020"); ???????????map.put("email","1427222829@qq.com"); ???????????GenerateHtmlUtil.generateHtmlByVelocity("news"+i,filePath,templatePath,map,"list"); ???????} ???????return "Over"; ???}}

五、工具类

package com.geenk.web.velocity_engine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;import org.apache.velocity.app.Velocity;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.BufferedWriter;import java.io.File;import java.io.FileOutputStream;import java.io.OutputStreamWriter;import java.util.Properties;/** * @author DUCHONG * @since 2018-04-28 18:35 **/public class GenerateHtmlUtil { ??static Logger logger = LoggerFactory.getLogger(GenerateHtmlUtil.class); ???/** ????* 通过velocity 模板生成静态HTML 文件 ????* @param fileName 生成的文件的文件名称 ????* @param filePath 保存文件位置 ????* @param templatePath velocity模板文件路径 ????* @param params 集合 ????* @param pageName 页面上需要便利或者使用的变量,可以为任意值 ????*/ ???public ?static void generateHtmlByVelocity(String fileName, String filePath, ?????????????????????????????????????String templatePath, Object params, String pageName){ ???????String finalFilePath=filePath+ File.separator+fileName+".html"; ???????try { ???????????//设置加载模版文件的方式,在classpath 下面查找 ???????????Properties p = new Properties(); ???????????p.put("file.resource.loader.class", ???????????????????"org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); ???????????Velocity.init(p); ???????????FileOutputStream fos = new FileOutputStream(finalFilePath); ???????????BufferedWriter writer ?= new BufferedWriter(new OutputStreamWriter( ???????????????????fos, "utf8")); ???????????Template velocity_template = Velocity.getTemplate(templatePath,"utf8"); ???????????VelocityContext context = new VelocityContext(); ???????????context.put(pageName, params); ???????????velocity_template.merge(context,writer); ???????????writer.close(); ???????} ???????catch (Exception e) { ???????????logger.error("文件路径失败!",e); ???????} ???}}

六、运行

浏览器输入localhost:8866/html,显示Over

Velocity根据模版生成静态html

原文地址:https://www.cnblogs.com/geekdc/p/8970782.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved