ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:27.08KB ,
资源ID:8065250      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/8065250.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(java freemarker.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

java freemarker.docx

1、java freemarkerJava FreeMarker 资料整理和收集(一) 资料编号NO101Freemarker 简介FreeMarker允许Java servlet保持图形设计同应用程序逻辑的分离,这是通过在模板中密封HTML完成的。模板用servlet提供的数据动态地生成 HTML。模板语言是强大的直观的,编译器速度快,输出接近静态HTML页面的速度。FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序虽然FreeMarker具有一些编程的能力,但通常由Ja

2、va程序准备要显示的数据,由FreeMarker生成页面,通过模板显示准备的数据FreeMarker不是一个Web应用框架,而适合作为Web应用框架一个组件FreeMarker与容器无关,因为它并不知道HTTP或Servlet;FreeMarker同样可以应用于非Web应用程序环境FreeMarker更适合作为Model2框架(如Struts)的视图组件,你也可以在模板中使用JSP标记库Freemarker 开发配置原本对freemarker了解不多,只知道是一种模板语言,我的个人网站设计时都没有考虑到使用freemarker,而是直接JSP展示。在网站上线推广过程中了解到,各个搜索引擎对动态

3、的链接不够友好,就是说对于网站中XXX.action?name= 这种格式的链接,搜索引擎不予收录,网络蜘蛛更亲奈.html的静态链接,为了便于更方便的网站推广,所以将网站集成URLREWRITER+FREEMARKER 技术改写了全站链接。大家可以去网站看下效果, 细心的人还是可以看见.action的痕迹的。现在网站中有两套链接,.action的动态链接,.html的静态链接。链接的改写纯粹是为了便于网站的推广,URLREWRITER过滤器的使用,FREEMARKER模板语言开发,这两块本人将在后续文章中做详细讲解,本文将结合网站详细介绍STRUTS2+FREEMARKER的开发配置。1、

4、准备相应的JAR包,struts2-core- 2.0.11.2.jar,xwork-2.0.5.jar,ognl-2.6.11.jar,freemarker- 2.3.8.jar,commons-logging-1.0.4.jar2、 解压缩struts2-core-2.0.11.2.jar复制META-INF/struts-tags.tld复制到工程WEB-INF目录下,FREEMARKER中默认是不支持struts2标签的,所以需将标签库导入模板中。3、 修改WEB.XML文件,添加STRUTS2过滤器Java代码 struts2 org.apacher.sturts2.dispatch

5、er.FilterDispatcher struts2 /*注意:对于网络上所说的要想在Freemarker中使用Struts2标签必须配置一个新SERVLETJava代码 JspSupportServlet org.apache.struts2.views.JspSupportServlet 1在本人的实践中发现这步并非必须的,此处有待深入研究4、 接下来这步应该是最重要的,配置struts.xml文件Java代码 /secondPage.jsp以上ACTIN配置为正常使用STRUTS2的配置,但在结合FREEMARKER中则需做如下改变Java代码 /WEB-INF/template/se

6、condPage.ftl注意:元素的type 属性必须设置为freemarker,这是因为Freemarker模板文件必须由Freemarker模板引擎来解析,而Struts2内部实现了 Freemarker模板引擎,但我们必须声明返回结果类型为freemarker才可以经过以上四步,STRUTS2+FREEMARKER配置完成,可以进行开发应用,下面展示一个简单的实例Java代码IndexAction.java private Log log=LogFactory.getLog(IndexAction.class); private String username; private Stri

7、ng password; /* * 登录处理 * return * throws Exception */ public String getVediosByCategory() throws Exception log.info(执行了登录方法getVediosByCategory(); return SUCCESS; 省略相应(getter,setter方法) 创建登录页面index.jsp Java代码 登录名: 密码: 创建结果页面:user.ftl Java代码#- - 欢迎登录! 注意: 1、Struts2标签在JSP 页面中的写法与在Freemarker模板文件中的写法不同。Fr

8、eemarker模板文件是以开始,以结束 2、Freemarker模板文件的处理,通过Web容器是无法直接处理的,因此不要让用户直接访问模板 文件。在开发过程中,我们可以将Freemarker文件直接放到Web工程的 WEB-INF目录或其子目录下(用户无法访问WEB-INF目录下文件),并在相应的struts-*.xml文件中配置type=freemarker 来输出模板FREEMARKER接触不深,如有不足之处请大虾们多多指正(二) 资料编号NO102FreeMarker也是与Web容器无关的,也就是FreeMarker并不一定需要运行在Web容器中:FreeMarker同样可以应用于非W

9、eb应用程序环境.而且,FreeMarker并不是只能生成HTML页面,它也可以生成各种文本,如XML,RTF,Java源代码等。Struts2默认采用FreeMarker作为其模板文件,而Struts2所有的主题模板文件都是采用FreeMarker编写的,eclipse中的JSP,Java等模板文件也是采用FreeMarker技术.一、 在struts2中使用freemarker以一个简单的添加用户信息为例:当用户点击首页中的“添加用户”连接时,这时会发出一个添加用户页面的请求(addInput.action),然后通过我们的返回一个添加页面,下面是我们普通的struts2配置文件一般是这么

10、配置的:/addInput.jspaddInput.jsp文件:Insert title here添加用户:username:password: 或者采用struts2标签:Insert title here添加用户:在action返回的view是一个jsp页面,也可以改成是一个freemarker模板页面:/addInput.ftl addInput.ftl模板文件 当然我们希望能在addInput.ftl上也能够使用struts2的标签,需要在addInput.ftl页面最开始添加对struts2标签的引用: 注意:struts2在freemarker页面中标签写法和jsp页面的写法不同,

11、freemarker里是,jsp里是,一定不要写错了! 使用时发现对中文的支持不好,显示时中文出现乱码,这里修改下struts.xml配置文件: 现在就可以在struts2中正常使用freemarker了!二、 在java程序中使用FreeMarker FreeMarker的模板就是一个.ftl文本文件,在该文件中使用了一些FreeMarker的特别标记,这些标记会动态显示,或者控制程序输出,如下面的模板文件代码:$name,你好!$msg 这里类似于$的就是动态的内容,称作插值. 为了使用FreeMarker来将数据模型中的值合并到模板文件中,可按如下步骤进行: 1,创建Configurat

12、ion实例,该实例负责管理FreeMarker的模板加载路径,负责生成模板实例 2,使用Configuration实例来生成Template实例,同进需要指定使用的模板文件 3,填充数据模型,数据模型就是一个Map对象 4,调用Template实例的process方法完成合并. 下面来看看几个测试实例,以加深我们的对模板语言的认识: 实例一:Freemarker基本使用方法: 我们下面就用一个使用FreeMarker来创建一个java测试程序,将模板中的内容输出的指定的文件中,来简单了解一下其基本语法,程序源代码如下:public void testFreemarker01() throws

13、Exception/指定模板文件路径(在项目下,你可以修改此路径)String dir = E:/workspace/freemarker/src/com/freemarker/test;/创建一个Configuration对象:该实例负责管理FreeMarker的模板加载路径,负责生成模板实例Configuration cfg = new Configuration();/配置freemarker从什么地方加载模板文件,通过创建的Configuration对象加载模板文件cfg.setDirectoryForTemplateLoading(new File(dir);/加载模板,生成模板实例

14、对象,同时制定所使用的模板文件Template template = cfg.getTemplate(test01.ftl);/定义数据模型(Map对象),并填充数据Map root = new HashMap();root.put(strvalue, 世界,你好);/定义输出,将其输出到指定文件中去Writer out = new FileWriter(dir+/test01_out.txt);/处理 执行,将模板与数据进行合并template.process(root, out);test01.ftl模板文件如下:第一个测试程序:$strvalue test01_out.txt文件内容结果

15、: 第一个测试程序:世界,你好 实例二:Freemarker中关于空值的处理问题: 当在模板文件中取值,拿不到,为空值时,freemaker默认会将错误信息打印在页面中或输出到指定文件中,为了将错误信息隐藏到后台,而不要现在前台页面中,需要设置setTemplateExceptionHandler 来忽略异常信息,具体代码如下:/关于空值的处理问题public void testFreemarker02() throws ExceptionString dir = E:/workspace/freemarker/src/com/freemarker/test;Configuration cfg

16、 = new Configuration();/配置freemarker从什么地方加载模板文件cfg.setDirectoryForTemplateLoading(new File(dir);color=red/增加设置忽略异常cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);/color/加载模板Template template = cfg.getTemplate(test02.ftl);/定义数据Map root = new HashMap();/root.put(strvalue, 世界,你

17、好);root.put(boolvalue, true);root.put(today, new Date();/定义输出Writer out = new FileWriter(dir+/test02_out.txt);template.process(root, out); 贴出模板文件test02.ftl:$strvalue$boolvalue?string(是,否)$today?string(yyyy年MM月dd日) 文件test02_out.txt显示结果: 是 2010年04月11日 如果上面的不设置忽略异常的话,则在模板文件中的$strvalue将取不到值而在页面显示错误,当然可以

18、在模板文件中可以使用条件判断将空值情况排除 。实例三:关于集合处理的问题 在模板中显示数据模型中集合列表信息, 显示集合列表信息: 条件判断: 条件$?string(1,0)关于这些还是去看实例吧,我就不在这里描述了。从实例中去学习其语法。 具体代码如下:/关于集合的处理public void testFreemarker03() throws ExceptionString dir = E:/workspace/freemarker/src/com/freemarker/test;Configuration cfg = new Configuration();/配置freemarker从什么

19、地方加载模板文件cfg.setDirectoryForTemplateLoading(new File(dir);/忽略异常cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);/加载模板Template template = cfg.getTemplate(test03.ftl);/定义数据Map root = new HashMap();List list = new ArrayList();for(int i=0; i10; i+)list.add(listvalue+i);root.put(li

20、st, list);/定义输出Writer out = new FileWriter(dir+/test03_out.txt);template.process(root, out); test03.ftl模板文件如下:listvalue:$v - $v_index $v_has_next?string(y,n) test03_out.txt显示结果如下: listvalue: listvalue0 - 0 y listvalue1 - 1 y listvalue2 - 2 y listvalue3 - 3 y listvalue4 - 4 y listvalue5 - 5 y listval

21、ue6 - 6 y listvalue7 - 7 y listvalue8 - 8 y listvalue9 - 9 n实例四:关于宏定义的应用/关于freemarker的宏定义public void testFreemarker04() throws ExceptionString dir = E:/workspace/freemarker/src/com/freemarker/test;Configuration cfg = new Configuration();/配置freemarker从什么地方加载模板文件cfg.setDirectoryForTemplateLoading(new

22、File(dir);/忽略异常cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);/加载模板Template template = cfg.getTemplate(test04.ftl);/定义数据Map root = new HashMap();root.put(name, 李四);/定义输出Writer out = new FileWriter(dir+/test04_out.txt);template.process(root, out); 来看看模板文件test04.ftl:Hello,$p

23、来看看输出文件的结果: Hello,张三 Hello,李四实例五:关于auto-import特性的使用,自动引入模板文件/关于auto-import特性public void testFreemarker05() throws ExceptionString dir = E:/workspace/freemarker/src/com/freemarker/test;Configuration cfg = new Configuration();/配置freemarker从什么地方加载模板文件cfg.setDirectoryForTemplateLoading(new File(dir);/忽略异常cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);/添加auto-importcfg.addAutoImport(my, common.ftl);/加载模板Template template = cfg.getTemplate(test05.ftl)

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

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