`

基于servlet的 Freemarker Demo

阅读更多

FreeMarker简介

FreeMarker模板文件主要由如下4个部分组成:

1,文本:直接输出的部分 //无论是json格式和html格式都变得非常的方便。

2,注释:<#-- ... -->格式部分,不会输出

3,插值:${...}#{...}格式的部分,将使用数据模型中的部分替代输出

4,FTL指令:FreeMarker指定,HTML标记类似,名字前加#予以区分,不会输出

java程序中使用FreeMarker

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

${name},你好!${msg}

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

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

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

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

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

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

pom.xml 添加freemarker的依赖包:

Code:
  1. <dependency>
  2. <groupId>org.freemarker</groupId>
  3. <artifactId>freemarker</artifactId>
  4. <version>2.3.16</version>
  5. </dependency>

servlet程序:

Code:
  1. importjava.util.*;
  2. importjava.io.*;
  3. importjavax.servlet.*;
  4. importjavax.servlet.http.*;
  5. importfreemarker.template.*;
  6. publicclassHelloServletextendsHttpServlet{
  7. privatestaticfinallongserialVersionUID=1L;
  8. privateConfigurationcfg;
  9. publicvoidinit(){
  10. //初始化FreeMarker配置
  11. //创建一个Configuration实例 第一步
  12. cfg=newConfiguration();
  13. //设置FreeMarker的模版文件位置
  14. cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/templates");
  15. }
  16. publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
  17. throwsServletException,IOException{
  18. //建立数据模型
  19. Maproot=newHashMap();
  20. root.put("message","HelloFreeMarker!");
  21. //取得模版文件 第三步
  22. Templatet=cfg.getTemplate("test.ftl");
  23. //开始准备生成输出
  24. //-使用模版文件的charset作为本页面的charset
  25. //-使用text/htmlMIME-type
  26. response.setContentType("text/html;charset="+t.getEncoding());
  27. Writerout=response.getWriter();
  28. //合并数据模型和模版,并将结果输出到out中
  29. try{
  30. t.process(root,out); //第四步
  31. }
  32. catch(TemplateExceptione){
  33. thrownewServletException("处理Template模版中出现错误",e);
  34. }
  35. }
  36. }

web.xml 配置:

Code:
  1. <servlet>
  2. <servlet-name>ServletFM</servlet-name>
  3. <servlet-class>HelloServlet</servlet-class>
  4. </servlet>
  5. <servlet-mapping>
  6. <servlet-name>ServletFM</servlet-name>
  7. <url-pattern>/ServletFM</url-pattern>
  8. </servlet-mapping>

输出结果:

Code:
  1. HelloFreeMarker!

可以看到这个Servlet类的代码与普通的Java程序中使用FreeMarker大致一样,区别有两个:1,设置FreeMarker加载模板的方法不一样,Servlet中设置加载的方法是setServletContextForTemplateLoading,第一个参数是本web应用的ServletContext,第二个参数是模板文件的路径.;2,结果必须输出到HttpServletResponse,才能被浏览器加载.

分享到:
评论
1 楼 greatwqs 2011-12-03  
提供一个下载的demo不是更好

相关推荐

    freemarker_servlet_demo

    freemarker servlet demo 模板 仅供参考 freemarker servlet demo 模板 仅供参考

    FreeMarker入门Demo

    FreeMarker与Struts2整合的入门Demo 直接布署在Servlet容器运行

    FreeMarker的Web版Demo

    FreeMarker的Web版Demo

    freemarker Demo封装

    包括控制台打印,html生成,html前端展示,servlet整合等。

    FreeMarker结合Servlet例子03.zip

    本工程旨在演示Servlet和FreeMarker的使用。 本工程编码方式:UTF-8 查看相应博客:http://blog.csdn.net/gaohuanjie/article/details/36676799

    freeMarker例子

    这是一个可以运行的freeMarker例子,主要有三个flt页面,一个添加页面,一个列表页面,一个添加成功页面,使用了servlet

    基于JDK提供的HttpServer开发的Web服务容器和以socket开发的ftp server,体积小

    ThinServer是基于JDK提供的HttpServer开发的Web服务容器和以socket开发的ftp server...代码中附带三个例子分别是ROOT(容器管理应用),demo1(FreeMarker实现动态示例),gpio4pi(通过遥控或网页控制4路开关示例)。

    【SSM模板】IDEA版,通用模板(包括所含技术的配置文件和demo)

    自己写项目写出来的SSM框架模板,纯原创。 需要可以自行购买,保证不亏。 遇到不懂得,可以私我留言。 ======================...4. jstl、jsp、Servlet、log4j、freemarker 5. shiro、lombok插件、文件上传 ......等等

    SpringBoot总结升级版

    包含SpringBoot环境搭建、常用注解、与Mybatis整合创建多数据源的连接+Druid连接池配置、SpringBoot的热部署、SpringBoot整合Freemarker/Servlet组件/文件上传与下载、SpringBoot自定义拦截器以及将拦截器注册到容器...

    SpringBoot学习总结

    主要为SpringBoot框架内容,包含SpringBoot环境搭建、常用注解、与Mybatis整合创建多数据源的连接+Druid连接池配置、SpringBoot的热部署、SpringBoot整合Freemarker/Servlet组件/文件上传与下载、SpringBoot自定义...

    struts-2.5.2-all所有jar包

    struts2-osgi-demo-bundle-2.5.2.jar, struts2-osgi-plugin-2.5.2.jar, struts2-oval-plugin-2.5.2.jar, struts2-pell-multipart-plugin-2.5.2.jar, struts2-plexus-plugin-2.5.2.jar, struts2-portlet-plugin-2.5.2...

    struts-2.5.10-all所有jar包

    request-api-1.0.6.jar,tiles-request-freemarker-1.0.6.jar,tiles-request-jsp-1.0.6.jar,tiles-request-servlet-1.0.6.jar,tiles-servlet-3.0.7.jar,tiles-template-3.0.7.jar,validation-api-1.1.0.Final.jar,...

    SpringMVC-Mybatis-Shiro-redis-master 权限集成缓存中实例

    解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。 解决后遗症:因为我们的权限是通过...

    cms后台管理

    一 Jeecms安装过程 将解压后得到的jeecms-...&lt;bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"&gt; &lt;property name="freemarkerVariables"&gt; &lt;map&gt; …… ...

    struts-2.3.30-all所有jar包

    struts2-osgi-demo-bundle-2.3.30.jar, struts2-osgi-plugin-2.3.30.jar, struts2-oval-plugin-2.3.30.jar, struts2-pell-multipart-plugin-2.3.30.jar, struts2-plexus-plugin-2.3.30.jar, struts2-portlet-plugin-...

    271个java需要用的jar包

    struts2-osgi-demo-bundle-2.3.15.3.jar struts2-osgi-plugin-2.3.15.3.jar struts2-oval-plugin-2.3.15.3.jar struts2-pell-multipart-plugin-2.3.15.3.jar struts2-plexus-plugin-2.3.15.3.jar struts2-portlet-...

    单点登录源码

    本系统是基于RBAC授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级...

Global site tag (gtag.js) - Google Analytics