java freemarkerWord文档下载推荐.docx

上传人:b****5 文档编号:21201500 上传时间:2023-01-28 格式:DOCX 页数:16 大小:27.08KB
下载 相关 举报
java freemarkerWord文档下载推荐.docx_第1页
第1页 / 共16页
java freemarkerWord文档下载推荐.docx_第2页
第2页 / 共16页
java freemarkerWord文档下载推荐.docx_第3页
第3页 / 共16页
java freemarkerWord文档下载推荐.docx_第4页
第4页 / 共16页
java freemarkerWord文档下载推荐.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

java freemarkerWord文档下载推荐.docx

《java freemarkerWord文档下载推荐.docx》由会员分享,可在线阅读,更多相关《java freemarkerWord文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。

java freemarkerWord文档下载推荐.docx

filter-mapping>

url-parttern>

/*<

/url-parttern>

/filter-mapping>

注意:

对于网络上所说的要想在Freemarker中使用Struts2标签必须配置一个新SERVLET

servlet>

servlet-name>

JspSupportServlet<

/servlet-name>

servlet-class>

org.apache.struts2.views.JspSupportServlet

/servlet-class>

load-on-startup>

1<

/load-on-startup>

/servlet>

在本人的实践中发现这步并非必须的,此处有待深入研究

4、接下来这步应该是最重要的,配置struts.xml文件

actionname="

getVediosByCategory"

class="

com.wang.vedio.action.IndexAction"

method="

>

resultname="

success"

/secondPage.jsp<

/result>

/action>

以上ACTIN配置为正常使用STRUTS2的配置,但在结合FREEMARKER中则需做如下改变

type="

freemarker"

/WEB-INF/template/secondPage.ftl<

reslutl>

元素的type属性必须设置为freemarker,这是因为Freemarker模板文件必须由Freemarker模板引擎来解析,而Struts2内部实现了Freemarker模板引擎,但我们必须声明返回结果类型为freemarker才可以

经过以上四步,STRUTS2+FREEMARKER配置完成,可以进行开发应用,下面展示一个简单的实例

IndexAction.java

……

privateLoglog=LogFactory.getLog(IndexAction.class);

privateStringusername;

privateStringpassword;

/**

*登录处理

*@return

*@throwsException

*/

publicStringgetVediosByCategory()throwsException{

log.info("

执行了登录方法getVediosByCategory()"

);

returnSUCCESS;

}

省略相应(getter,setter方法)

创建登录页面index.jsp

s:

formaction="

登录名:

textfieldname="

username"

/>

br>

密码:

password"

submitvalue="

登录"

/>

/s:

form>

创建结果页面:

user.ftl

#--

#assigns=JspTaglibs["

/WEB-INF/struts-tags.tld"

]>

-->

html>

body>

欢迎<

@s.propertyvalue="

登录!

/body>

/html>

1、Struts2标签在JSP页面中的写法与在Freemarker模板文件中的写法不同。

Freemarker模板文件是以<

@s.tag>

开始,以<

/@s.tag>

结束

2、Freemarker模板文件的处理,通过Web容器是无法直接处理的,因此不要让用户直接访问模板文件。

在开发过程中,我们可以将Freemarker文件直接放到Web工程的WEB-INF目录或其子目录下(用户无法访问WEB-INF目录下文件),并在相应的struts-*.xml文件中配置type="freemarker"来输出模板

 

FREEMARKER接触不深,如有不足之处请大虾们多多指正

(二)资料编号NO102

FreeMarker也是与Web容器无关的,也就是FreeMarker并不一定需要运行在Web容器中:

FreeMarker同样可以应用于非Web应用程序环境.而且,FreeMarker并不是只能生成HTML页面,它也可以生成各种文本,如XML,RTF,Java源代码等。

Struts2默认采用FreeMarker作为其模板文件,而Struts2所有的主题模板文件都是采用FreeMarker编写的,eclipse中的JSP,Java等模板文件也是采用FreeMarker技术.

一、在struts2中使用freemarker

以一个简单的添加用户信息为例:

当用户点击首页中的“添加用户”连接时,这时会发出一个添加用户页面的请求(addInput.action),然后通过我们的返回一个添加页面,下面是我们普通的struts2配置文件一般是这么配置的:

addInput"

com.freemarker.action.UserAction"

result>

/addInput.jsp<

addInput.jsp文件:

%@pagelanguage="

java"

import="

java.util.*"

pageEncoding="

ISO-8859-1"

%>

head>

metahttp-equiv="

Content-Type"

content="

text/html;

charset=GB2312"

title>

Inserttitlehere<

/title>

/head>

添加用户:

add.action"

>

username:

inputtype="

text"

name="

br/>

password:

submit"

value="

add"

/form>

或者采用struts2标签:

%@taglibprefix="

s"

uri="

/struts-tags"

post"

textfieldlabel="

"

passwordlabel="

在action返回的view是一个jsp页面,也可以改成是一个freemarker模板页面:

resulttype="

/addInput.ftl<

addInput.ftl模板文件

当然我们希望能在addInput.ftl上也能够使用struts2的标签,需要在addInput.ftl页面最开始添加对struts2标签的引用:

注意:

struts2在freemarker页面中标签写法和jsp页面的写法不同,freemarker里是<

@s.form>

,jsp里是<

,一定不要写错了!

使用时发现对中文的支持不好,显示时中文出现乱码,这里修改下struts.xml配置文件:

<

constantname=”struts.i18n.encoding”value=”gb2312″/>

现在就可以在struts2中正常使用freemarker了!

二、在java程序中使用FreeMarker

FreeMarker的模板就是一个.ftl文本文件,在该文件中使用了一些FreeMarker的特别标记,这些标记会动态显示,或者控制程序输出,如下面的模板文件代码:

${name},你好!

${msg}

这里类似于${}的就是动态的内容,称作"

插值"

.

为了使用FreeMarker来将数据模型中的值合并到模板文件中,可按如下步骤进行:

1,创建Configuration实例,该实例负责管理FreeMarker的模板加载路径,负责生成模板实例

2,使用Configuration实例来生成Template实例,同进需要指定使用的模板文件

3,填充数据模型,数据模型就是一个Map对象

4,调用Template实例的process方法完成合并.

下面来看看几个测试实例,以加深我们的对模板语言的认识:

实例一:

Freemarker基本使用方法:

我们下面就用一个使用FreeMarker来创建一个java测试程序,将模板中的内容输出的指定的文件中,来简单了解一下其基本语法,程序源代码如下:

publicvoidtestFreemarker01()throwsException{

//指定模板文件路径(在项目下,你可以修改此路径)

Stringdir="

E:

/workspace/freemarker/src/com/freemarker/test"

;

//创建一个Configuration对象:

该实例负责管理FreeMarker的模板加载路径,负责生成模板实例

Configurationcfg=newConfiguration();

//配置freemarker从什么地方加载模板文件,通过创建的Configuration对象加载模板文件

cfg.setDirectoryForTemplateLoading(newFile(dir));

//加载模板,生成模板实例对象,同时制定所使用的模板文件

Templatetemplate=cfg.getTemplate("

test01.ftl"

//定义数据模型(Map对象),并填充数据

Maproot=newHashMap();

root.put("

strvalue"

"

世界,你好"

//定义输出,将其输出到指定文件中去

Writerout=newFileWriter(dir+"

/test01_out.txt"

//处理执行,将模板与数据进行合并

template.process(root,out);

}

test01.ftl模板文件如下:

第一个测试程序:

${strvalue}

test01_out.txt文件内容结果:

第一个测试程序:

世界,你好

实例二:

Freemarker中关于空值的处理问题:

当在模板文件中取值,拿不到,为空值时,freemaker默认会将错误信息打印在页面中或输出到指定文件中,为了将错误信息隐藏到后台,而不要现在前台页面中,需要设置setTemplateExceptionHandler

来忽略异常信息,具体代码如下:

//关于空值的处理问题

publicvoidtestFreemarker02()throwsException{

//配置freemarker从什么地方加载模板文件

[color=red]//增加设置忽略异常

cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);

[/color]

//加载模板

test02.ftl"

//定义数据

//root.put("

boolvalue"

true);

today"

newDate());

//定义输出

/test02_out.txt"

贴出模板文件test02.ftl:

${boolvalue?

string("

是"

"

否"

)}

${today?

yyyy年MM月dd日"

文件test02_out.txt显示结果:

2010年04月11日

如果上面的不设置忽略异常的话,则在模板文件中的${strvalue}将取不到值而在页面显示错误,当然可以在模板文件中可以使用条件判断将空值情况排除

#ifstrvalue?

exists>

/#if>

实例三:

关于集合处理的问题

在模板中显示数据模型中集合列表信息,

显示集合列表信息:

#list>

/#list>

条件判断:

#if变量?

exists>

条件${?

1"

0"

)}关于这些还是去看实例吧,我就不在这里描述了。

从实例中去学习其语法。

具体代码如下:

//关于集合的处理

publicvoidtestFreemarker03()throwsException{

//忽略异常

test03.ftl"

Listlist=newArrayList();

for(inti=0;

i<

10;

i++){

list.add("

listvalue"

+i);

list"

list);

/test03_out.txt"

test03.ftl模板文件如下:

listvalue:

#--正常显示的文本信息-->

#listlistasv>

${v}-${v_index}[${v_has_next?

y"

n"

)}]

test03_out.txt显示结果如下:

listvalue:

listvalue0-0[y]

listvalue1-1[y]

listvalue2-2[y]

listvalue3-3[y]

listvalue4-4[y]

listvalue5-5[y]

listvalue6-6[y]

listvalue7-7[y]

listvalue8-8[y]

listvalue9-9[n]

实例四:

关于宏定义的应用<

#macro>

/#macro>

//关于freemarker的宏定义

publicvoidtestFreemarker04()throwsException{

test04.ftl"

name"

李四"

/test04_out.txt"

来看看模板文件test04.ftl:

#macrogreetp>

Hello,${p}

@greetp="

张三"

${name}"

来看看输出文件的结果:

Hello,张三

Hello,李四

实例五:

关于auto-import特性的使用,自动引入模板文件

//关于auto-import特性

publicvoidtestFreemarker05()throwsException{

//添加auto-import

cfg.addAutoImport("

my"

common.ftl"

test05.ftl"

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 建筑土木

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1