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的依赖包:
- <dependency>
- <groupId>org.freemarker</groupId>
- <artifactId>freemarker</artifactId>
- <version>2.3.16</version>
- </dependency>
servlet程序:
- importjava.util.*;
- importjava.io.*;
- importjavax.servlet.*;
- importjavax.servlet.http.*;
- importfreemarker.template.*;
-
- publicclassHelloServletextendsHttpServlet{
- privatestaticfinallongserialVersionUID=1L;
- privateConfigurationcfg;
- publicvoidinit(){
- 第一步
- cfg=newConfiguration();
- cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/templates");
- }
-
- publicvoidservice(HttpServletRequestrequest,HttpServletResponseresponse)
- throwsServletException,IOException{
-
第二步
- Maproot=newHashMap();
- root.put("message","HelloFreeMarker!");
- 第三步
- Templatet=cfg.getTemplate("test.ftl");
- response.setContentType("text/html;charset="+t.getEncoding());
- Writerout=response.getWriter();
- try{
- t.process(root,out); //第四步
- }
- catch(TemplateExceptione){
- thrownewServletException("处理Template模版中出现错误",e);
- }
- }
- }
web.xml 配置:
- <servlet>
- <servlet-name>ServletFM</servlet-name>
- <servlet-class>HelloServlet</servlet-class>
- </servlet>
- <servlet-mapping>
- <servlet-name>ServletFM</servlet-name>
- <url-pattern>/ServletFM</url-pattern>
- </servlet-mapping>
输出结果:
可以看到这个Servlet类的代码与普通的Java程序中使用FreeMarker大致一样,区别有两个:1,设置FreeMarker加载模板的方法不一样,在Servlet中设置加载的方法是setServletContextForTemplateLoading,第一个参数是本web应用的ServletContext,第二个参数是模板文件的路径.;2,结果必须输出到HttpServletResponse中,才能被浏览器加载.
分享到:
相关推荐
freemarker servlet demo 模板 仅供参考 freemarker servlet demo 模板 仅供参考
FreeMarker与Struts2整合的入门Demo 直接布署在Servlet容器运行
FreeMarker的Web版Demo
包括控制台打印,html生成,html前端展示,servlet整合等。
本工程旨在演示Servlet和FreeMarker的使用。 本工程编码方式:UTF-8 查看相应博客:http://blog.csdn.net/gaohuanjie/article/details/36676799
这是一个可以运行的freeMarker例子,主要有三个flt页面,一个添加页面,一个列表页面,一个添加成功页面,使用了servlet
ThinServer是基于JDK提供的HttpServer开发的Web服务容器和以socket开发的ftp server...代码中附带三个例子分别是ROOT(容器管理应用),demo1(FreeMarker实现动态示例),gpio4pi(通过遥控或网页控制4路开关示例)。
自己写项目写出来的SSM框架模板,纯原创。 需要可以自行购买,保证不亏。 遇到不懂得,可以私我留言。 ======================...4. jstl、jsp、Servlet、log4j、freemarker 5. shiro、lombok插件、文件上传 ......等等
包含SpringBoot环境搭建、常用注解、与Mybatis整合创建多数据源的连接+Druid连接池配置、SpringBoot的热部署、SpringBoot整合Freemarker/Servlet组件/文件上传与下载、SpringBoot自定义拦截器以及将拦截器注册到容器...
主要为SpringBoot框架内容,包含SpringBoot环境搭建、常用注解、与Mybatis整合创建多数据源的连接+Druid连接池配置、SpringBoot的热部署、SpringBoot整合Freemarker/Servlet组件/文件上传与下载、SpringBoot自定义...
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...
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,...
解决方案:在 FreeMarkerViewExtend.java 33行处 增加了BasePath ,通过BasePath 来控制请求目录,在 Freemarker 中可以自由使用,而 JSP 中是直接在 JSP 中获取BasePath 使用。 解决后遗症:因为我们的权限是通过...
一 Jeecms安装过程 将解压后得到的jeecms-...<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerVariables"> <map> …… ...
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-...
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授权和基于用户授权的细粒度权限控制通用平台,并提供单点登录、会话管理和日志管理。接入的系统可自由定义组织、角色、权限、资源等。用户权限=所拥有角色权限合集+用户加权限-用户减权限,优先级...