`
newspringwork
  • 浏览: 101375 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

Web项目中使用Freemarker

阅读更多

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提供的例子。

 

 

 

  • 大小: 18.7 KB
分享到:
评论

相关推荐

    freemarker 应用,环境搭建,使用

    3. **配置**: 如果你在Java Web项目中使用FreeMarker,需要配置Servlet容器(如Tomcat)。在`web.xml`中添加FreeMarker的初始化参数: ```xml &lt;servlet-name&gt;FreemarkerServlet &lt;servlet-class&gt;freemarker.ext....

    FreeMarker的Web版Demo

    这个"FreeMarker的Web版Demo"可能是为了展示如何在Web环境中集成并使用FreeMarker模板技术。以下是关于FreeMarker、Servlet和Spring的相关知识点,以及可能在Demo中涉及的内容: 1. **FreeMarker**: - **基本概念...

    在struts2中使用freemarker模版

    要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`目录下。这个库包含了FreeMarker模板引擎的所有必要组件。然后创建一个新的web工程,例如`...

    struts2中使用freeMarker

    在Struts2中使用FreeMarker,主要涉及以下几个核心概念和步骤: 1. **配置FreeMarker**: - 在Struts2的配置文件(通常为struts.xml)中,你需要指定FreeMarker作为默认的视图技术。 - 配置FreeMarker的路径,...

    springboot+webflux+mongodb+freemarker

    在Spring Boot应用中,FreeMarker与Web层结合,允许开发者用简单的模板语言来定义页面布局,然后在后台填充动态数据,生成最终的网页。 这个小demo展示了如何将这些技术融合在一起,实现一个完整的Web应用流程。...

    freemarker 简单项目示例

    - 在项目中引入Freemarker库,通常通过Maven或Gradle添加依赖。 - 配置Freemarker,包括设置模板目录、缓存策略、编码等。 3. **创建模板文件** - 模板文件通常以`.ftl`为扩展名,位于项目指定的模板目录下。 -...

    grails使用freemarker.rar

    总结来说,这个压缩包内容可能包括如何在Grails项目中配置和使用FreeMarker,以及如何处理领域类之间的关系映射,特别是“one2many”关系。通过学习这些知识,开发者可以更有效地构建Grails应用,并利用FreeMarker...

    SSH项目 有Freemarker模版

    在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...

    springboot如何使用Freemarker模版引擎

    这只是一个基础的介绍,实际开发中,你可以根据项目需求配置更多的Freemarker特性和功能,如缓存管理、日期格式化等,以满足复杂的应用场景。记住,熟练掌握Freemarker的语法和配置,能让你在构建动态网页时更加...

    java web项目无刷新导出word文档demo,使用freemarker模板引擎

    综上所述,"java web项目无刷新导出word文档demo"项目利用FreeMarker模板引擎实现了在用户无感知的情况下动态生成Word文档,提供了一种高效且用户体验良好的数据导出解决方案。通过学习和理解这个项目,开发者可以将...

    freemarker 中文乱码解决

    在处理Freemarker模板引擎时,中文乱码问题是一个常见的挑战,尤其是在国际化应用中。Freemarker是一款功能强大的...通过上述方法,可以有效地解决Freemarker中出现的中文乱码问题,提高Web应用的稳定性和用户体验。

    Servlet中使用freeMarker

    在Servlet中使用FreeMarker,主要是为了实现视图层的解耦,提高代码的可维护性和可扩展性。 FreeMarker的工作原理是,它接收一个数据模型(通常是Java对象)和一个模板文件,然后根据模板文件中的指令,将数据模型...

    本项目主要通过一些详细的小列子讲述如何正确的使用FreeMarker

    下面将详细解释如何正确使用FreeMarker,并通过Spring MVC中的具体案例来阐述。 1. **FreeMarker配置**: - 在Spring MVC的配置文件中,需要添加FreeMarker视图解析器的相关配置,包括模板目录、输出字符集、是否...

    freemarker web工程实例

    总结来说,"freemarker web工程实例"旨在通过实际操作,展示如何在Web应用中集成和使用Freemarker。从设置项目依赖到编写控制器和模板,每个环节都体现了Freemarker在动态网页生成中的优势。实践这个实例可以帮助...

    Java html转word 使用FreeMarker

    这些数据将在FreeMarker模板中使用,以填充文档的各个部分。例如,你可以有一个包含标题、段落、列表等元素的数据对象。 在代码中,使用FreeMarker API加载模板文件,创建`Template`对象,然后用数据模型实例化`Map...

    使用freemarker扩展struts标签

    6. **在模板中使用标签**: 最后,在你的FreeMarker模板文件中,你可以像使用其他内置标签一样使用你的自定义标签。 通过这种方式,开发者可以创建出高度定制的UI组件,提高代码的可读性和可维护性。自定义标签使得...

    eclipse中FreeMarkerIDE插件

    在Java项目中,通常会将FreeMarker模板与Spring框架或其他MVC框架结合使用。FreeMarkerIDE插件支持与Eclipse的Java项目无缝集成,你可以直接在Java控制器中指定模板文件路径,并在Eclipse中调试模板。 **6. 自定义...

    IDEA+Maven+SpringBoot之Web入门(freemarker,jsp)

    添加依赖后,我们就可以在SpringBoot项目中使用Freemarker和JSP了。Freemarker是一个模板语言,用于生成动态HTML、XML等文本。它的优势在于与Java代码分离,提高了可读性和维护性。在SpringBoot中,我们可以通过`@...

    freemarker中文文档与包

    2. **数据模型与变量**: 在Freemarker中,数据模型是由Java对象组成的,这些对象可以通过模板语言访问。模板中的变量通常引用这些数据模型中的属性,例如`${user.name}`将输出用户对象的name属性值。 3. **模板设计...

    freemarker导出doc及docx

    在SpringBoot项目中,只需在`pom.xml`中添加Freemarker依赖,然后在`application.properties`中配置相应的模板路径,即可启用Freemarker模板引擎。这样,我们可以使用Freemarker语法编写模板文件,通过Java代码动态...

Global site tag (gtag.js) - Google Analytics