`
海浪儿
  • 浏览: 274131 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论
阅读更多

 

在做开放平台的文档中心过程中,由于api文档不是经常变化的,所以如果每次页面渲染的时候,都去查询DB获取数据,这种性能浪费就太大了,而且文档中心是不需要登录就可以访问的,这样会给DB带来很大的压力。

 

对于这种情况,可以采用静态文件方案,基本思路如下:

  1. 小二在后台发布api时,api管控后台基于velocity生成静态文档,并将该文档存储至共享文件目录,存储的完整路径根据预定的规则来确定。

     
  2. 用户访问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);

 必须指定模板文件所在的目录,否则引擎会找不到模板文件。

 

本文为原创,转载请注明出处

 

  • 大小: 10.2 KB
  • 大小: 10.1 KB
分享到:
评论

相关推荐

    基于Velocity的代码生成器

    【基于Velocity的代码生成器】是一种实用的工具,它利用Apache Velocity模板引擎来自动化Java代码的生成过程。在J2EE开发中,大量的重复性编码工作可以通过代码生成器来简化,提高开发效率和代码质量。 Velocity是一...

    javaCMS 生成静态页面简单列子

    Java CMS(内容管理系统)生成静态页面是一种常见的优化网站性能和提升用户体验的方法。在这个过程中,原本由动态脚本生成的网页内容被转化为HTML文件,这些HTML文件可以被浏览器直接读取,减少了服务器处理请求的...

    java生成静态页面的思路

    在Java编程领域,生成静态页面是一项常见的任务,尤其在构建网站、文档系统或者API文档时。这个过程通常涉及将动态内容转化为HTML格式的静态文件,以便于提高网站的加载速度和减少服务器负担。本篇文章将深入探讨...

    Velocity+Struts生成html

    Velocity是一个基于模板语言的轻量级视图技术,而Struts则是一个MVC(Model-View-Controller)架构的框架。两者结合使用,可以高效地生成HTML页面,实现动态数据展示和交互。 ### Velocity 框架 Velocity是Apache...

    Jsp结合Velocity实现依据Word模板文件生成对应数据文件

    在这种场景下,"Jsp结合Velocity实现依据Word模板文件生成对应数据文件"的技术方案显得尤为实用。JSP(JavaServer Pages)是用于构建动态Web应用的服务器端技术,而Velocity则是一个强大的模板引擎,它允许开发者将...

    velocity实例

    在实际使用中,开发者通常会创建一个或多个数据模型类,然后使用Velocity引擎读取这些模板文件,结合数据模型中的属性信息,自动生成相应的Java代码。生成的代码可以直接整合到项目中,无需手动编写这些重复性高的...

    java自动生成静态页面Demo源码

    在本示例中,"java自动生成静态页面Demo源码" 提供了一个完整的实现,包括源代码和可能使用的数据库连接,以便用户能够理解和应用这种技术。 1. **Java 语言基础**: Java 是一种广泛使用的面向对象的编程语言,以...

    Velocity Demo

    Velocity Demo是基于Velocity框架的一个示例项目,旨在帮助初学者快速上手并理解Velocity的工作原理和用法。在这个项目中,"Myvelocity"可能是指包含Velocity模板文件和其他相关配置的目录。 Velocity的核心概念...

    maven velocity

    4. **生成静态页面**:在Maven构建过程中,Velocity插件会读取模板文件,结合Java代码中的数据,生成HTML或其他格式的静态页面,然后放置到指定的输出目录。 5. **测试与调试**:使用Maven的命令行工具,如`mvn ...

    使用Velocity Swing制作的代码生成工具

    Velocity语法简单,易于学习,适合用于生成静态页面或代码。 3. **模板引擎**:在代码生成工具中,模板引擎是核心组件。开发者可以预先定义模板文件,模板中包含变量和控制结构,这些在运行时会被实际数据替换,...

    velocity demo

    ** Velocity 模板生成静态页面** 在 Velocity 中,模板被用来生成静态页面。这种方式特别适用于网站内容管理系统(CMS),它可以动态地生成网站的静态HTML页面,提高网页加载速度,并降低服务器负载。具体步骤如下...

    Velocity介紹.ppt

    2. **生成静态内容**:Velocity 也可以用来生成静态的 SQL 查询、XML 文档或各种代码片段,简化复杂的数据处理任务。 3. **集成组件**:Velocity 还可以作为一个集成组件,嵌入到其他系统中,处理动态内容的生成。 ...

    velocity的简单demo

    这就是一个基本的Velocity应用,展示了如何使用Velocity生成动态内容。通过这种方式,开发者可以将业务逻辑和视图展示分离,使得代码更加清晰,易于维护。在实际项目中,Velocity可以与Spring、Struts等框架结合使用...

    Velocity

    **Velocity** 是一个基于Java的模板引擎,它允许开发者将静态页面内容与动态数据源分离,使得网页设计和应用程序逻辑可以独立开发。Velocity被广泛应用于Web应用开发中,特别是作为MVC模式的一部分,用于生成HTML、...

    velocity使用说明doc文档

    Velocity 是一个基于 Java 的模板引擎,它主要用于将静态页面与动态数据分离,使得开发者和设计师可以协同工作,遵循 MVC 架构。Velocity 提供了一种简单而强大的脚本语言——Velocity 模板语言 (VTL),让页面设计者...

    velocity中文

    Velocity是由Apache软件基金会开发的一个开源项目,它最初设计用于生成静态网站内容,但后来被广泛应用于各种Java应用中,如电子邮件模板、报告生成、XML文档构建等。Velocity的核心理念是“分离展示层和逻辑层”,...

    velocity官方实例

    以下是一个简单的例子,展示如何使用Velocity生成用户详情页面: ```html <!DOCTYPE html> 用户详情 - ${user.name} 用户信息 用户名:${user.name} 邮箱:${user.email} 注册日期:${user.registerDate} ...

    Java Velocity模板引擎,简单字符串生成

    Java Velocity模板引擎是一种基于Apache软件基金会的开源项目,用于生成动态内容。它是Java应用程序中用于创建HTML、XML、电子邮件等静态或动态文档的强大的模板语言和库。Velocity旨在将内容展示与业务逻辑分离,使...

Global site tag (gtag.js) - Google Analytics