Struts2 结合 Freemarker 实例
来源:互联网 发布:2017年程序员考试答案 编辑:程序博客网 时间:2024/04/28 16:50
Freemarker 是一个不依赖 web 容器的模板引擎,一个基于模板生成文本输出的工具。其工作的原理如下图:
freemarker 不是一个 web 应用的框架,而适合作为 web 应用的一个组件。使用 freemarker ,可以用已经定义好的模板,生成各种想要的文件,在某些方面使用起来还是挺快捷的,例如使用 freemarker 编写一个代码生成器。本文就是一个结合 Struts2 web 应用框架的使用 Freemarker 的例子。具体的理论方面的知识,就不在此赘述了。
这个例子是结合 Struts2 2.3.15版本,freemarker 2.3.19。主要的配置文件及代码如下:
(1)首先是配置 Struts2
<!-- 配置 Struts2 --> <filter> <filter-name>struts2AFreemarker</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2AFreemarker</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
(2)其次是配置 Freemarker
<!-- 配置 Freemarker --> <servlet> <servlet-name>freemarker</servlet-name> <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class> <!-- 配置模板的路径 --> <init-param> <!-- 配置模板存放的位置(我这里放在了主目录下面) --> <param-name>TemplatePath</param-name> <param-value>/</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>freemarker</servlet-name> <url-pattern>*.ftl</url-pattern> </servlet-mapping>
(3)然后就是配置 Struts.xml 文件,基本上和单独使用 Struts 没什么大的变动,就是在 result 的返回页面时,type 类型要设为 freemarker ,这样,响应的信息就可以交给 Freemarker 组件处理了。
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"><struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="default" namespace="/" extends="struts-default"> <default-action-ref name="index" /> <global-results> <result name="error">/error.jsp</result> </global-results> <global-exception-mappings> <exception-mapping exception="java.lang.Exception" result="error"/> </global-exception-mappings> <action name="freemarker" class="com.struts2freemarker.test.action.FreemarkerAction"> <result name="success" type="freemarker"> /index.ftl </result> </action> </package> <include file="example.xml"/> <!-- Add packages here --></struts>
(4)在 Action 中,使用正常的方法,如果想要将某个值传到 Freemarker 的模板中时,只要将这个值绑定到相应的属性中,就行了。我是将变量 freemarker 传到 index.ftl 中,部分 action 代码如下:
/** * 序列编号 */ private static final long serialVersionUID = 1L; private String freemarker = "free"; /** * 构造方法 */ public FreemarkerAction() { } public String execute(){ log.info("execute 方法执行了!"); return SUCCESS; } /** * @return the freemarker */ public String getFreemarker() { return freemarker; } /** * @param freemarker the freemarker to set */ public void setFreemarker(String freemarker) { this.freemarker = freemarker; }
(5)具体的模板文件(index.ftl)如下:
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] /> <#--这一句是为了让Freemarker识别struts2的标签 --> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>测试 Freemarker 的页面</title></head><body> this is the testing Freemarker's page! <h1>${freemarker}</h1> <@s.form action="reg" > <@s.textfield label="用户名" name="uname" /> <@s.submit /> </@s.form> </body></html>
如上面所写的,如果要想使用 Struts2 的标签,还需要将 struts2-core-2.3.15.jar 的在 MATA-INF 下的 struts-tags.tld 文件复制出来,放到想要放置的位置。这里,我是放在了项目目录下的 WEB-INF/struts-tags.tld 下,然后再在 web.xml 文件中,配置标签的 Servlet ,如下:
<!-- 配置使用标签时的标签支持配置 --> <servlet> <!-- define a JspSupportServlet Object --> <servlet-name>JspSupportServlet</servlet-name> <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> <!-- setting JspSupportServlet auto start --> <load-on-startup>1</load-on-startup> </servlet>
这样,就可以在 index.ftl 模板中,使用 Struts2 的标签了。
这样,就完成了一个简单的 Struts2 和 Freemarker 的整合了,使用起来还是挺容易的,适合模块化开发,只要前台人员将页面组织好,后台人员只需要将数据塞到指定的页面中的位置就行了。
- Struts2 结合 Freemarker 实例
- struts2与freemarker结合的实例
- struts2结合freemarker
- Struts2 结合 Freemarker使用
- Struts2结合freemarker自定义标签
- Struts2结合freemarker自定义标签
- FreeMarker 与 Struts2 的结合
- Struts2整合FreeMarker实例
- Struts2整合 Freemarker 实例
- Struts2与Freemarker整合实例
- struts2和freemarker集成实例
- struts2和freemarker集成实例
- FreeMarker与Struts2结合的部署
- freemarker技术入门例子(结合struts2)
- Struts2跟freemarker的配置实例讲解
- struts2 freemarker
- freemarker+Struts2
- FreeMarker在struts2.0,JAVA,web中的应用实例
- 删除暴风影音的几种方式
- 《Getting Started with Storm》章节一 基础
- Alt+Ctrl+Del组合键的屏蔽
- 【Hibernate学习笔记】数据库事务
- 黑马程序员—面向对象(多态)
- Struts2 结合 Freemarker 实例
- 工商微信解决方案
- Stiff equation
- Evernote推出实体笔记本Evernote Business Notebook,支持搜索手写笔记,用实体便签将笔记同步到Evernote上的相应分类
- hadoop初体验
- [bash/sh]Linux中tree命令显示中文问题
- 腾讯实习生笔试题 软件开发-后台开发方向2014.4.20
- android事件的分发
- linux+tomcat struts 2 Jsp页面传值中文乱码问题解决方法