这几天在搞一个利用freemarker和java生成静态页面的东西,经过百度和自己的调试终于搞定,现在总结出核心代码分享。
/**
* 生成静态页面主方法
*
* @param context
* ServletContext
* @param data
* 一个Map的数据结果集
* @param templatePath
* ftl模版路径
* @param targetHtmlPath
* 生成静态页面的路径
*/
public static void crateHTML(ServletContext context,
Map<String, Object> data, String templatePath, String targetHtmlPath) {
// 加载模版
freemarkerCfg.setServletContextForTemplateLoading(context, "/");
freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8");
String filePath = ServletActionContext.getServletContext().getRealPath(
"/static");
File file = new File(filePath);
if(!file.exists() || !file.isDirectory()){
file.mkdir();
}
File f = new File(file,"/all_css");
if(!f.exists() || !f.isDirectory()){
f.mkdir();
}
try {
freemarkerCfg.setDirectoryForTemplateLoading(new File(filePath));
// 设置包装器,并将对象包装为数据模型
freemarkerCfg.setObjectWrapper(new DefaultObjectWrapper());
// 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
// 否则会出现乱码
Template template = freemarkerCfg
.getTemplate(templatePath, "UTF-8");
template.setEncoding("UTF-8");
// 静态页面路径
String htmlPath = filePath + "/" + targetHtmlPath;
File htmlFile = new File(htmlPath);
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(htmlFile), "UTF-8"));
// 处理模版
template.process(data, out);
out.flush();
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 生成友情链接的静态页cuxiao.html
*
* @param context
* @param data
*/
public static void createIndexFriendLink(ServletContext context,
Map<String, Object> data) {
try {
//cuxiao.ftl是项目中建立的ftl文件,cuxiao.html是生成的静态页面名
return crateHTML(context, data, "/cuxiao.ftl", "cuxiao.html");
} catch (Exception e) {
e.printStackTrace();
}
}
最后调用方法,private Map<String, Object> pList = new HashMap<String, Object>();
List list = new ArrayList();
pList.put("list",list);
HttpServletRequest request = ServletActionContext.getRequest();
pList.put("JspTaglibs", new TaglibFactory(request.getSession()
.getServletContext()));
this.createIndexFriendLink(
ServletActionContext.getServletContext(), pList);
//页面介绍map时一定要与pList中的key一致
分享到:
相关推荐
Java CMS(内容管理系统)生成静态页面是一种常见的优化网站性能和提升用户体验的方法。在这个过程中,原本由动态脚本生成的网页内容被转化为HTML文件,这些HTML文件可以被浏览器直接读取,减少了服务器处理请求的...
7. **部署和维护**:生成的静态HTML页面可以部署到Web服务器上,供用户访问。由于它们不涉及服务器端的动态处理,所以性能往往更好。同时,由于数据和显示分离,更新内容时只需修改数据模型,无需触碰HTML,降低了...
Java生成静态页面的基本原理 Java生成静态页面的核心在于能够将HTML格式的字符串写入到文件系统中。这里的重点包括如何创建文件、写入内容以及关闭流等操作。在上述提供的部分代码中,已经涵盖了这些基本的操作...
3. **Java_静态页面**:Java可以用于生成静态HTML页面,通常是通过后端处理数据,然后将结果写入到HTML文件中。这种做法在需要大量静态内容且不需要动态交互的场景下非常有效,因为它减少了服务器的计算负担和数据库...
5. **静态文件生成**: 渲染后的HTML内容可以写入到文件系统,生成静态HTML文件。这样,Web服务器可以直接返回这些静态文件,提高网站的访问速度。 6. **优化与调试**: FreeMarker支持缓存机制,可以提高模板的加载...
在生成静态页面的场景中,Struts2可以作为数据和模板之间的桥梁,将处理后的业务数据传递给Freemarker,由Freemarker生成静态HTML。 **生成静态页面的流程** 1. **配置Struts2**: 首先,我们需要在Struts2的配置...
要使用Java生成静态页面,我们通常需要以下步骤: 1. **数据获取**:首先,我们需要获取用于生成页面的数据。这可能来自于数据库、API接口、文件或任何其他数据源。Java提供了丰富的库,如JDBC用于数据库操作,或者...
`CreatorHtmlServlet`可能是这样一个Servlet,当接收到请求时,它会根据请求参数生成静态HTML。 2. **HTML渲染**: 源码可能包含了HTML模板引擎,如FreeMarker或Velocity,这些模板引擎允许将Java对象的数据绑定到...
**Freemarker模板** 是一个强大的Java模板引擎,用于动态生成文本输出,如HTML、XML或PDF。它支持变量替换、控制结构(如if/else)和复杂的逻辑,使得开发者能以模板语言编写静态部分,而动态数据则由程序在运行时...
本示例项目是在Eclipse环境中创建的一个工程,目的是演示如何使用Freemarker来生成静态HTML页面。 在了解这个项目之前,首先需要知道什么是Freemarker。Freemarker是一个开源的Java库,它允许开发者通过定义模板(....
本篇文章将详细讲解如何利用FreeMarker来生成静态页面。 首先,我们需要理解FreeMarker的基本工作原理。在FreeMarker模板文件中,我们可以编写HTML结构,同时嵌入特定的FreeMarker语法,如`<#if>`、`<#foreach>`等...
标题“test_static_html:java生成静态HTML”暗示了这是一个关于使用Java编程语言生成静态HTML页面的主题。在IT领域,静态HTML是指不包含服务器端脚本的网页,它们的内容在发送到浏览器时不会改变。这样的页面通常...
在本项目"springboot整合freemarker生成静态html的demo.zip"中,我们将探讨如何将SpringBoot框架与FreeMarker模板引擎结合,以实现动态数据驱动的静态HTML页面生成。FreeMarker是一个强大的、开源的模板语言,它允许...
### Java生成静态页面——Freemarker实例教程 #### 一、Freemarker简介 Freemarker是一款基于模板的通用工具,它可以嵌入到各种应用程序中,帮助开发者将动态数据渲染成HTML、XML或其他文本格式的文件。对于提高...
本篇文章将深入探讨Freemarker的工作原理、配置、语法以及在生成静态页面中的应用。 一、Freemarker的工作原理 Freemarker是一个基于Java的模板语言,它与后端服务器通过模板引擎进行交互。当用户请求页面时,...
Java 自动生成静态页面技术是一种将动态网站内容转化为静态HTML页面的方法,这有助于提高网站的访问速度和搜索引擎优化。在本示例中,"java自动生成静态页面Demo源码" 提供了一个完整的实现,包括源代码和可能使用的...
在本项目中,“struts2+freemarker 生成静态页面”意味着利用这两个工具将动态网页转化为静态HTML页面,以提高网站性能和用户体验。 1. **Struts2框架**:Struts2提供了全面的MVC架构支持,包括动作(Action)类、...
总的来说,Java生成静态页是一个涉及到前端模板、后端逻辑、文件系统操作、网络协议、性能优化和安全等多个领域的综合实践。正确实施这一技术,能够显著提升网站的响应速度和可扩展性,提供更好的用户体验。
例如,Jekyll允许配置FreeMarker作为其模板引擎,这样就能利用FreeMarker的灵活性和表达力来创建复杂的页面结构。 总结,网站生成静态页面是一个有效的优化手段,通过选用合适的工具和方法,结合FreeMarker模板引擎...