在做开放平台的文档中心过程中,由于api文档不是经常变化的,所以如果每次页面渲染的时候,都去查询DB获取数据,这种性能浪费就太大了,而且文档中心是不需要登录就可以访问的,这样会给DB带来很大的压力。
对于这种情况,可以采用静态文件方案,基本思路如下:
- 小二在后台发布api时,api管控后台基于velocity生成静态文档,并将该文档存储至共享文件目录,存储的完整路径根据预定的规则来确定。
- 用户访问api文档时,文档中心前台根据api的名称确定文档在共享文件目录存储的完整路径,然后解析文档,最终展现给用户
以下代码示例如何基于velocity生成静态文档
public void generateDoc(ApiModel apiModel) { FileOutputStream fos = null; BufferedWriter writer = null; try { Properties properties = new Properties(); //指定生成静态文档需要的模板文件所在的目录 properties.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH, apiDocTemplatePath); VelocityEngine engine = new VelocityEngine(); //初始化模板引擎 engine.init(properties); //根据API_TEMPLATE_FILE读取生成静态文档需要的模板文件 Template template = engine.getTemplate(API_TEMPLATE_FILE, "GBK"); VelocityContext context = new VelocityContext(); //将生成文档需要的数据apiModel放入模板引擎的上下文中 context.put("apiModel", apiModel); //确定静态文档在共享文件目录的完整存储路径 String filePath = baseFolder.getFile().getAbsolutePath() + "/" + apiModel.getEnName() + ".html"; File file = new File(filePath); if (!file.getParentFile().exists()) { file.getParentFile().mkdirs(); } fos = new FileOutputStream(file); writer = new BufferedWriter(new OutputStreamWriter(fos, "GBK"));// 设置写入的文件编码,解决中文问题 //将数据与模板merge,并写入到静态文档 template.merge(context, writer); } catch (Exception e) { //打印日志 } finally { if (writer != null) { try { writer.close(); } catch (IOException e) { //打印日志 } } if (fos != null) { try { fos.close(); } catch (IOException e) { //打印日志 } } } }
需要注意的是这行代码
properties.setProperty(VelocityEngine.FILE_RESOURCE_LOADER_PATH,apiDocTemplatePath);
必须指定模板文件所在的目录,否则引擎会找不到模板文件。
本文为原创,转载请注明出处
相关推荐
【基于Velocity的代码生成器】是一种实用的工具,它利用Apache Velocity模板引擎来自动化Java代码的生成过程。在J2EE开发中,大量的重复性编码工作可以通过代码生成器来简化,提高开发效率和代码质量。 Velocity是一...
Java CMS(内容管理系统)生成静态页面是一种常见的优化网站性能和提升用户体验的方法。在这个过程中,原本由动态脚本生成的网页内容被转化为HTML文件,这些HTML文件可以被浏览器直接读取,减少了服务器处理请求的...
在Java编程领域,生成静态页面是一项常见的任务,尤其在构建网站、文档系统或者API文档时。这个过程通常涉及将动态内容转化为HTML格式的静态文件,以便于提高网站的加载速度和减少服务器负担。本篇文章将深入探讨...
Velocity是一个基于模板语言的轻量级视图技术,而Struts则是一个MVC(Model-View-Controller)架构的框架。两者结合使用,可以高效地生成HTML页面,实现动态数据展示和交互。 ### Velocity 框架 Velocity是Apache...
在这种场景下,"Jsp结合Velocity实现依据Word模板文件生成对应数据文件"的技术方案显得尤为实用。JSP(JavaServer Pages)是用于构建动态Web应用的服务器端技术,而Velocity则是一个强大的模板引擎,它允许开发者将...
在实际使用中,开发者通常会创建一个或多个数据模型类,然后使用Velocity引擎读取这些模板文件,结合数据模型中的属性信息,自动生成相应的Java代码。生成的代码可以直接整合到项目中,无需手动编写这些重复性高的...
在本示例中,"java自动生成静态页面Demo源码" 提供了一个完整的实现,包括源代码和可能使用的数据库连接,以便用户能够理解和应用这种技术。 1. **Java 语言基础**: Java 是一种广泛使用的面向对象的编程语言,以...
Velocity Demo是基于Velocity框架的一个示例项目,旨在帮助初学者快速上手并理解Velocity的工作原理和用法。在这个项目中,"Myvelocity"可能是指包含Velocity模板文件和其他相关配置的目录。 Velocity的核心概念...
4. **生成静态页面**:在Maven构建过程中,Velocity插件会读取模板文件,结合Java代码中的数据,生成HTML或其他格式的静态页面,然后放置到指定的输出目录。 5. **测试与调试**:使用Maven的命令行工具,如`mvn ...
Velocity语法简单,易于学习,适合用于生成静态页面或代码。 3. **模板引擎**:在代码生成工具中,模板引擎是核心组件。开发者可以预先定义模板文件,模板中包含变量和控制结构,这些在运行时会被实际数据替换,...
** Velocity 模板生成静态页面** 在 Velocity 中,模板被用来生成静态页面。这种方式特别适用于网站内容管理系统(CMS),它可以动态地生成网站的静态HTML页面,提高网页加载速度,并降低服务器负载。具体步骤如下...
2. **生成静态内容**:Velocity 也可以用来生成静态的 SQL 查询、XML 文档或各种代码片段,简化复杂的数据处理任务。 3. **集成组件**:Velocity 还可以作为一个集成组件,嵌入到其他系统中,处理动态内容的生成。 ...
这就是一个基本的Velocity应用,展示了如何使用Velocity生成动态内容。通过这种方式,开发者可以将业务逻辑和视图展示分离,使得代码更加清晰,易于维护。在实际项目中,Velocity可以与Spring、Struts等框架结合使用...
**Velocity** 是一个基于Java的模板引擎,它允许开发者将静态页面内容与动态数据源分离,使得网页设计和应用程序逻辑可以独立开发。Velocity被广泛应用于Web应用开发中,特别是作为MVC模式的一部分,用于生成HTML、...
Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面与动态数据分离,使得开发者和设计师可以协同工作,遵循 MVC 架构。Velocity 提供了一种简单而强大的脚本语言——Velocity 模板语言 (VTL),让页面设计者...
Velocity是由Apache软件基金会开发的一个开源项目,它最初设计用于生成静态网站内容,但后来被广泛应用于各种Java应用中,如电子邮件模板、报告生成、XML文档构建等。Velocity的核心理念是“分离展示层和逻辑层”,...
以下是一个简单的例子,展示如何使用Velocity生成用户详情页面: ```html <!DOCTYPE html> 用户详情 - ${user.name} 用户信息 用户名:${user.name} 邮箱:${user.email} 注册日期:${user.registerDate} ...
Java Velocity模板引擎是一种基于Apache软件基金会的开源项目,用于生成动态内容。它是Java应用程序中用于创建HTML、XML、电子邮件等静态或动态文档的强大的模板语言和库。Velocity旨在将内容展示与业务逻辑分离,使...