FreeMarker是一款模板引擎:一种基于模板的、用来生成输出文本的通用工具。
Web项目中,有时用其作为视图层技术来生成响应的html,其实下载的freemarker压缩包中已经有很多例子介绍如何在项目中使用。如图,有jsp的、struts中使用的等等,很详细。
下面还是就简单介绍一下如何使用,方便以后回忆:
准备:添加freemarker.jard到项目fmk
一、直接使用Freemarker模板替代jsp、html页面
1.web.xml配置
<!-- Freemarker模板servlect --> <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> <init-param> <param-name>NoCache</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name>ContentType</param-name> <param-value>text/html</param-value> </init-param> <init-param> <param-name>template_update_delay</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>default_encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>locale</param-name> <param-value>en_US</param-value> </init-param> <init-param> <param-name>number_format</param-name> <param-value>0.##</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> <welcome-file-list> <welcome-file>index.ftl</welcome-file> </welcome-file-list>
2.freemarker的欢迎页index.ftl
<html> <head> <title>Freemarker练手</title> </head> <body> <#assign msg="你好,这是Freemarker发出的消息"> <h1>Freemarker说:</h1> ${msg} </body> </html>
3.注意:
项目编码需要和web.xml中配置的freemarker编码一致,不然会出现乱码
4.访问:
下面就可以通过URL【http://localhost:8080/fmk/】来访问了
二、使用Servlet作为控制器
这里加入servlet作为控制器,给Freemarker模板传入数据。
1.新建servlet:SimpleMsgServlet.java
package com.kyj.servlet; import java.io.IOException; import java.io.PrintWriter; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import freemarker.template.Configuration; import freemarker.template.Template; import freemarker.template.TemplateException; public class SimpleMsgServlet extends HttpServlet { private static Configuration cfg; @Override public void init() throws ServletException { if (cfg == null) { cfg = new Configuration(); cfg.setServletContextForTemplateLoading(getServletContext(),"WEB-INF/template"); } } @Override protected void service(HttpServletRequest req, HttpServletResponse res)throws ServletException, IOException { //传给模板用来存储数据的model Map<String, Object> model = new HashMap<String, Object>(); //传给模板的list数据 List<String> authors = Arrays.asList(new String[]{"James","Killer","King"}); //传给模板的map数据 Map<String, Object> viewLogs = new HashMap<String, Object>(); viewLogs.put("ROOT", "2012-12-31 23:43:11"); viewLogs.put("LOG_VIEWER", "2012-12-31 23:43:11"); viewLogs.put("DATA_MANAGER", "2012-12-31 23:43:11"); //添加到model中 model.put("viewLogs", viewLogs); model.put("authors", authors); //加载模板输出 Template t = cfg.getTemplate("SimpleMsg.ftl"); res.setCharacterEncoding("UTF-8"); t.setEncoding("UTF-8"); PrintWriter out = res.getWriter(); try { t.process(model, out); } catch (TemplateException e) { e.printStackTrace(); } } }
<servlet> <servlet-name>simpleMsg</servlet-name> <servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simpleMsg</servlet-name> <url-pattern>/simpleMsg</url-pattern> </servlet-mapping>
2.WEB-INF/template下新建模板文件:SimpleMsg.ftl
<#ftl encoding="UTF-8"> <html> <head> <title>Freemarker简单Servlet消息</title> </head> <body> <h1>下面是Servlet传过来的信息</h1> <#-- list数据 --> <h4>作者列表</h4> <ul> <#list authors as author> <li>${author}</li> </#list> </ul> <#-- map数据 --> <h4>管理员最后登录时间列表</h4> <table cellpadding="1" border='1' cellspacing="1"> <tr> <th width='120' align='center'>用户名</th> <th width='200' align='center'>最后登录时间</th> </tr> <#list viewLogs?keys as record> <tr> <td>${record}</td> <td align='center'>${viewLogs[record]}</td> </tr> </#list> </table> </body> </html>
3.web.xml配置servlet
<servlet> <servlet-name>simpleMsg</servlet-name> <servlet-class>com.kyj.servlet.SimpleMsgServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simpleMsg</servlet-name> <url-pattern>/simpleMsg</url-pattern> </servlet-mapping>
4.访问servlet
http://localhost:8080/fmk/simpleMsg
三、与Struts框架整合
见freemarker提供的例子。
相关推荐
3. **配置**: 如果你在Java Web项目中使用FreeMarker,需要配置Servlet容器(如Tomcat)。在`web.xml`中添加FreeMarker的初始化参数: ```xml <servlet-name>FreemarkerServlet <servlet-class>freemarker.ext....
这个"FreeMarker的Web版Demo"可能是为了展示如何在Web环境中集成并使用FreeMarker模板技术。以下是关于FreeMarker、Servlet和Spring的相关知识点,以及可能在Demo中涉及的内容: 1. **FreeMarker**: - **基本概念...
要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`目录下。这个库包含了FreeMarker模板引擎的所有必要组件。然后创建一个新的web工程,例如`...
在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...
在Spring Boot应用中,FreeMarker与Web层结合,允许开发者用简单的模板语言来定义页面布局,然后在后台填充动态数据,生成最终的网页。 这个小demo展示了如何将这些技术融合在一起,实现一个完整的Web应用流程。...
- 在项目中引入Freemarker库,通常通过Maven或Gradle添加依赖。 - 配置Freemarker,包括设置模板目录、缓存策略、编码等。 3. **创建模板文件** - 模板文件通常以`.ftl`为扩展名,位于项目指定的模板目录下。 -...
总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的关系映射,特别是“one2many”关系。通过学习这些知识,开发者可以更有效地构建Grails应用,并利用FreeMarker...
在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...
这只是一个基础的介绍,实际开发中,你可以根据项目需求配置更多的Freemarker特性和功能,如缓存管理、日期格式化等,以满足复杂的应用场景。记住,熟练掌握Freemarker的语法和配置,能让你在构建动态网页时更加...
综上所述,"java web项目无刷新导出word文档demo"项目利用FreeMarker模板引擎实现了在用户无感知的情况下动态生成Word文档,提供了一种高效且用户体验良好的数据导出解决方案。通过学习和理解这个项目,开发者可以将...
在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的...通过上述方法,可以有效地解决Freemarker中出现的中文乱码问题,提高Web应用的稳定性和用户体验。
在Servlet中使用FreeMarker,主要是为了实现视图层的解耦,提高代码的可维护性和可扩展性。 FreeMarker的工作原理是,它接收一个数据模型(通常是Java对象)和一个模板文件,然后根据模板文件中的指令,将数据模型...
下面将详细解释如何正确使用FreeMarker,并通过Spring MVC中的具体案例来阐述。 1. **FreeMarker配置**: - 在Spring MVC的配置文件中,需要添加FreeMarker视图解析器的相关配置,包括模板目录、输出字符集、是否...
总结来说,"freemarker web工程实例"旨在通过实际操作,展示如何在Web应用中集成和使用Freemarker。从设置项目依赖到编写控制器和模板,每个环节都体现了Freemarker在动态网页生成中的优势。实践这个实例可以帮助...
这些数据将在FreeMarker模板中使用,以填充文档的各个部分。例如,你可以有一个包含标题、段落、列表等元素的数据对象。 在代码中,使用FreeMarker API加载模板文件,创建`Template`对象,然后用数据模型实例化`Map...
6. **在模板中使用标签**: 最后,在你的FreeMarker模板文件中,你可以像使用其他内置标签一样使用你的自定义标签。 通过这种方式,开发者可以创建出高度定制的UI组件,提高代码的可读性和可维护性。自定义标签使得...
在Java项目中,通常会将FreeMarker模板与Spring框架或其他MVC框架结合使用。FreeMarkerIDE插件支持与Eclipse的Java项目无缝集成,你可以直接在Java控制器中指定模板文件路径,并在Eclipse中调试模板。 **6. 自定义...
添加依赖后,我们就可以在SpringBoot项目中使用Freemarker和JSP了。Freemarker是一个模板语言,用于生成动态HTML、XML等文本。它的优势在于与Java代码分离,提高了可读性和维护性。在SpringBoot中,我们可以通过`@...
2. **数据模型与变量**: 在Freemarker中,数据模型是由Java对象组成的,这些对象可以通过模板语言访问。模板中的变量通常引用这些数据模型中的属性,例如`${user.name}`将输出用户对象的name属性值。 3. **模板设计...
在SpringBoot项目中,只需在`pom.xml`中添加Freemarker依赖,然后在`application.properties`中配置相应的模板路径,即可启用Freemarker模板引擎。这样,我们可以使用Freemarker语法编写模板文件,通过Java代码动态...