这是生成静态页面的预览:
其对应的模板文件:
<table style="text-align:center;FONT-SIZE: 11pt; WIDTH: 600px; FONT-FAMILY: 宋体; BORDER-COLLAPSE: collapse" borderColor=#3399ff cellSpacing=0 cellPadding=0 align=center border=1>
<tr>
<td><b>编号</b></td>
<td><b>用户名</b></td>
<td><b>密码</b></td>
<td><b>性别</b></td>
<td><b>年龄</b></td>
</tr>
<#list personList as person>
<tr>
<td>${person.id}</td>
<td>${person.name}</td>
<td>${person.password}</td>
<td>${person.sex}</td>
<td>${person.age}</td>
</tr>
</#list>
</table>
Action:
public class LoginAction extends ActionSupport {
private String msg;
@Override
public String execute() {
StaticFreemarker sf = new StaticFreemarker();
List<Person> persons = new ArrayList<Person>();
for(int i=1;i<=23;i++){
Person p = new Person();
p.setId(i);
p.setName("darkness" + i);
p.setAge("23");
p.setPassword("sky" + i);
p.setSex("man");
persons.add(p);
}
Map<String,List<Person>> map = new HashMap<String,List<Person>>();
map.put("personList", persons);
String htmlfile = "personList.html";
try {
sf.init("personList.ftl", htmlfile, map, "index");
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
this.msg = htmlfile;
return Action.SUCCESS;
}
public String getMsg() {
return msg;
}
}
struts.xml配置文件:
<struts>
<package name="tutorial" extends="struts-default">
<action name="login" class="org.darkness.freemarker.action.LoginAction">
<result type="redirect">/${msg}</result>
</action>
</package>
</struts>
通过Freemarker生成静态页面的关键代码如下:
public class StaticFreemarker {
/**
* 初始化模板引擎
*
* @param ftl 模板名称
* @param htmlName 需要生成html页面的名称
* @param map 模板中需要的参数集合
* @param relativePath 模板相对于根路径的相对路径
* @throws IOException
* @throws TemplateException
*/
@SuppressWarnings("unchecked")
public void init(String ftl, String htmlName, Map map, String relativePath)
throws IOException, TemplateException {
Configuration freemarkerCfg = new Configuration();
freemarkerCfg.setServletContextForTemplateLoading(ServletActionContext
.getServletContext(), "/" + relativePath);
freemarkerCfg.setEncoding(Locale.getDefault(), "gbk");
Template template = freemarkerCfg.getTemplate(ftl);
template.setEncoding("gbk");
String path = ServletActionContext.getServletContext().getRealPath("/");
File htmlFile = new File(path + htmlName);
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(htmlFile), "gbk"));
template.process(map, out);
out.flush();
out.close();
}
}
说明:需要添加的jar包如下
- 大小: 105.4 KB
- 大小: 7 KB
分享到:
相关推荐
FreeMarker与Struts2的...通过这个案例,开发者可以学习到如何将FreeMarker与Struts2结合起来,实现动态生成静态页面,以及如何使用c3p0和dbUtils进行数据库操作。这对于理解Web应用的架构和提高开发效率具有重要意义。
Struts2整合FreeMarker实例框架初学例子....利用Struts2生成静态页面其实很灵活,很强大,尤其是利用Struts2对Freemarker较好的支持,充分利用Freemarker的模板功能来生成静态页面。 比较简单.大家见笑了.
在新闻发布系统中,Freemarker被用作视图层技术,与Struts2结合,根据Action返回的数据动态生成静态页面。这样可以将业务逻辑与表现逻辑分离,使得代码更加清晰。 5. **用户认证与权限管理** 系统中预设了一个管理...
- 使用FreeMarker生成静态网页,可以预先计算好所有数据并缓存,从而避免每次请求都与数据库交互,提高页面加载速度。 - 静态化技术可以应用于不经常改变但访问频繁的页面,例如产品详情页或文章列表页。这可以...
部署到tomcat中, 访问/freemarker/build_index.action 点击首页生成,当显示生成成功过后 然后访问 ...已经完美将struts2+freemarker+spring整合~ 希望对你们有所帮助。 经测试:tomcat5.5 无法正常运行
在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker来渲染结果。例如: ```xml <result type="freemarker">/...
Struts2、Freemarker和Log4j是Java Web开发中的三个重要组件,它们各自扮演着不同的角色。这里,我们来深入探讨这三个技术的核心概念及其整合应用。 **Struts2** 是一个开源的MVC(Model-View-Controller)框架,...
这个新闻系统就是利用这四个技术进行整合构建的,旨在提供一个高效、灵活且易于维护的后台管理系统,同时具备生成静态页面的能力,以优化网站性能。 1. **Struts**: Struts是一个基于MVC设计模式的Java Web框架,...
开发者可以在模板中使用变量和控制结构,FreeMarker会结合后台提供的数据模型,生成最终的静态页面。 在"Struts2+Spring2.5+Hibernate3.2+Freemarker"的集成中,Spring作为整体的容器,负责管理所有组件的生命周期...
4. **整合 FreeMarker**:在 Struts2 中使用 FreeMarker 作为视图层,需要添加相应的 JAR 包,并在 `web.xml` 中配置 Struts2 的 FilterDispatcher。在模板中可以直接使用 Struts2 的标签库,通过 `<@...>` 语法调用...
整合过程包括在Struts2 Action中生成图表,然后通过JSP或FreeMarker模板将其渲染到页面上。同时,需要配置Struts2的Action结果类型,确保能够正确返回图表的图像流。 5. **案例分析** 包含的整合案例可能展示了...
Struts2、Spring和Hibernate是Java Web开发中的三大框架,它们各自负责不同的职责,并通过整合可以构建出高效、模块化的应用程序。在这个“基于Struts2 Spring Hibernate整合”的项目中,我们看到开发者使用了Maven...
通过整合JFreeChart,开发者可以在Struts2的Action中处理业务逻辑,然后利用JFreeChart生成相应的图表,最后通过Struts2的Result返回到前端页面展示。 整合JFreechart和Struts2的过程主要包括以下几个步骤: 1. **...
该属性指定了Struts 2使用的FreeMarker管理器,默认值为`org.apache.struts2.views.freemarker.FreemarkerManager`。 #### struts.freemarker.wrapper.altMap 此属性只支持`true`和`false`两个属性值,默认值为`...
- **Struts2整合步骤**:展示如何在Struts2项目中添加FreeMarker支持,配置文件设置,Action和模板的关联。 - **模板示例**:展示一个完整的FreeMarker模板,包括变量、表达式、指令的使用。 - **最佳实践**:...
开发者可以在FreeMarker模板中定义变量和逻辑,然后在服务器端填充这些变量,最后由FreeMarker生成最终的HTML响应。 **整合过程** 1. **设置项目结构**:在Web应用中,通常会将Spring MVC相关的配置文件(如`...
2. **插件体系**:提供了丰富的插件,如Tiles、Freemarker等,方便开发者快速构建页面。 3. **异常处理**:通过全局异常映射,可以统一处理异常,提高代码可读性。 4. **拦截器**:允许开发者定义自己的拦截器,实现...
Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,与Struts2等MVC框架结合使用,能够实现动态页面渲染。本案例主要探讨如何在Struts2框架中整合并应用FreeMarker模板技术。 1. **Freemarker简介** ...
开发者定义模板,其中包含静态文本和变量,FreeMarker负责将变量替换为实际值,生成最终的动态页面。在Struts框架中,FreeMarker通常用于视图层,提供灵活且高效的页面渲染。 **FCKeditor** FCKeditor是历史上广泛...