FreeMarker 由浅入深二 FreeMarker开发环境搭建

无情 阅读:669 2021-03-31 23:23:47 评论:0

第一节:个人理解

FreeMark 用法思路理解:

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

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

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


FreeMarker 个人结构图展示:


第二节:FreeeMarker 环境搭建

1. 使用myeclipse创建一个web项目FreeMarker
2. 把下载到的jar包(freemarker-2.3.9.jar)放到\WebRoot\WEB-INF\lib目录下。下载地址:http://freemarker.sourceforge.net/freemarkerdownload.html (注:官方网站.org的经常打不开)
3. 在WebRoot下面新建templates文件包,然后在里面新建扩展名为ftl的模板。
a) 创建Hello.ftl内容如下:

<html> 
<head> 
<title>hello!</title> 
</head> 
<body> 
<h1>hello ${user}!</h1> 
</body> 
</html>
4. 在src目录下创建example包 和Hello.java文件,代码如下:
package example; 
 
import java.io.IOException; 
import java.io.PrintWriter; 
import java.util.HashMap; 
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 Hello extends HttpServlet { 
	private Configuration cfg; 
	//初始化函数 
	public void init() 
	{ 
			//初始化FreeMarker配置 
	        //创建一个Configuration实例 
	        cfg = new Configuration(); 
	        //设置FreeMarker的模版文件位置 
	        cfg.setServletContextForTemplateLoading(getServletContext(),"templet"); 
	} 
 
	@Override 
	public void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException { 
		// TODO Auto-generated method stub 
		  //建立数据模型 
		   Map root = new HashMap(); 
		   //放入对应数据key value 
		   root.put("user","周志刚"); 
		   //取得模版文件 
		   Template t =cfg.getTemplate("Hello.ftl"); 
		   //开始准备生成输出 
		   //使用模版文件的charset作为本页面的charset 
		   //使用text/html MIME-type 
		   response.setContentType("text/html; charset=" + t.getEncoding()); 
		   PrintWriter out = response.getWriter(); 
		   
		   //合并数据模型和模版,并将结果输出到out中 
		   try 
		   { 
		    t.process(root,out);// 用模板来开发servlet可以只在代码里面加入动态的数据 
		   } 
		   catch(TemplateException e) 
		   { 
		    throw new ServletException("处理Template模版中出现错误", e); 
		   } 
	} 
 
	@Override 
	public void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException { 
		// TODO Auto-generated method stub 
		this.doGet(request, response); 
	} 
	 
 
} 

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

1,创建Configuration实例,该实例负责管理FreeMarker的模板加载路径,负责生成模板实例
2,使用Configuration实例来生成Template实例,同进需要指定使用的模板文件
3,填充数据模型,数据模型就是一个Map对象
4,调用Template实例的process方法完成合并.

第五步:FreeMarker 模板集成至Web.xml文件中

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5"  
	xmlns="http://java.sun.com/xml/ns/javaee"  
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
  <display-name></display-name>	 
  <welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
  </welcome-file-list> 
  	<servlet>   
	<servlet-name>freemarker</servlet-name>   
	<servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>   
	<!-- 下面配置FreeMarker的ftl文件位置 -->   
	<init-param>   
	<param-name>TemplatePath</param-name>   
	<param-value>/</param-value>   
	</init-param>   
	<!-- 是否和服务器(tomcat)一起启动,0为不,1为是 -->   
	<load-on-startup>1</load-on-startup>   
	</servlet>   
	 
	<servlet-mapping>   
	<servlet-name>freemarker</servlet-name>   
	<url-pattern>*.ftl</url-pattern>   
	</servlet-mapping>  
	 
	<!--配置Hello.servlet 访问路径  --> 
	<servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>example.Hello</servlet-class> 
	</servlet> 
	<servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>*.do</url-pattern> 
	</servlet-mapping>  
</web-app> 

项目结构图:




项目运行,朋友们可以自己去进行相关测试,下一章节:重点讲解FreeMarker 的基础知识要点。



声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号