一个简单的FreeMarker案例

1,首先:导入FreeMarker的Jar文件

2,写一个JavaBean用于封装数据

package freemarker;

 

public class UserInfo {

         private String uname=null;

         private int uage = 0;

         public String getUname() {

                   return uname;

         }

         public void setUname(String uname) {

                   this.uname = uname;

         }

         public int getUage() {

                   return uage;

         }

         public void setUage(int uage) {

                   this.uage = uage;

         }

}

3,写一个测试用的Test

package freemarker;

 

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

 

import freemarker.template.Configuration;

import freemarker.template.Template;

 

public class FreeMarkerTest {

 

         private Configuration cfg = null;

        

         public Configuration getConf(){

                   return cfg;

         }

        

         public void init() throws Exception {

                   cfg = new Configuration();

                   cfg.setDirectoryForTemplateLoading(new File("bin/freemarker"));//模板文件所在的位置

         }

         public static void main(String[] args) throws Exception {

                   FreeMarkerTest obj = new FreeMarkerTest();

                   obj.init();

                   Map root = new HashMap();

                   UserInfo u = new UserInfo();

                   u.setUname("熊师虎");

                   u.setUage(100);

                   List strList = new ArrayList();

                   strList.add("aa");

                   strList.add("bb");

                   strList.add("cc");

                   strList.add("dd");

                  

                   root.put("strlist", strList);

                   root.put("u", "u");//放入用户的信息,在模板中可以取到用户的信息

                   root.put("htag", "<h1>我是一级标题</h1>");

                   Template t = obj.getConf().getTemplate("Test.ftl");

                  //在WebRoot目录下构建一个test1.html

                   Writer out = new OutputStreamWriter(new FileOutputStream("WebRoot/eg.html"),"GBK");

                   t.process(root, out);//开始转化处理

                   System.out.println("Successfull.....");

         }

}

 

 

4,写一个Servlet

package control;

 

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.io.Writer;

import java.util.ArrayList;

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.UserInfo;

import freemarker.template.Configuration;

import freemarker.template.Template;

import freemarker.template.TemplateException;

 

public class FreeMarkerServletextends HttpServlet {

         public FreeMarkerServlet() {

                   super();

         }

        

         @Override

         public void destroy() {

                   super.destroy();

         }

 

         public void doGet(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

                   Configuration cfg=new Configuration();

                   //String path=this.getServletContext().getRealPath("bin/freemarker");

                   //cfg.setDirectoryForTemplateLoading(new File(path));

                   cfg.setServletContextForTemplateLoading(this.getServletContext(), "bin/freemarker");

                   Template tp=cfg.getTemplate("test.ftl");

                   //因为这个是一个Servlet,所以要用这个,并且由于在Content-Type中配置的字符集都是UTF-8,所以在此处要也设置成UTF-8

                   Writer out=new OutputStreamWriter(new FileOutputStream(this.getServletContext().getRealPath(".")+"/eg.html"),"utf-8");   //注意的是这里的字符集定要和自己配置的字符集是相同的,否则将出现乱码。并且注意OutputStreamWriter转为Writer的方法。

                   //PrintWriter out=new PrintWriter(new FileOutputStream(new File(this.getServletContext().getRealPath(".")+"/eg.html")));////如果为servelet则response.getOutputStream()

                   Map root = new HashMap();

                   UserInfo u=new UserInfo();

                   u.setUname("熊师虎");

                   u.setUage(100);

                   root.put("u", u);//放入用户的信息,在模板中可以取到用户的信息

                  

                   List strlist=new ArrayList();

                   strlist.add("aa");

                   strlist.add("bb");

                   strlist.add("cc");

                   strlist.add("dd");

                   root.put("strlist", strlist);

                  

                   root.put("htag", "<h1>我是一级标题</h1>");

 

                   try {

                            tp.process(root, out);

                   } catch (TemplateException e) {

                            // TODO Auto-generated catch block

                            e.printStackTrace();

                   }

                   System.out.println("Successfull................");

                  

        

                   out.flush();

                   out.close();

         }

 

         public void doPost(HttpServletRequest request, HttpServletResponse response)

                            throws ServletException, IOException {

 

                   doGet(request, response);

         }

 

}

5、配置servlet的url-pattern为:FreeMarkerServlet

6、运行FreeMarkerTest或访问FreeMarkerServlet,用以生成e.html

7、访问e.html,即在浏览器中输入:http://localhost:8080/freemarker/eg.html

 

 

 

 

时间: 2024-11-01 04:56:43

一个简单的FreeMarker案例的相关文章

html5 canvas 实现一个简单的叮当猫头部

原文:html5 canvas 实现一个简单的叮当猫头部 html5的canvas是很强大的,今天也是温习了一下之前的基础知识,然后学着做了一个简单的小案例.虽然在这一块几乎空白,但还是乐于尝试...... 效果如下: 代码如下: <div class="doraemon"> <canvas id="face" width="600" height="1500">您的浏览器不支持canvas</c

一个简单不报错的summernote 图片上传案例_javascript技巧

一个比较完整的summernote上传图片的案例,没有后台(上传图片网上案例太多),只有前端js.修正了网上提供的,但是有bug的代码. 这个例子,js保证不报错.亲测可用 <%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html > <html> <head&

一个简单的bigfile tablespace无法扩展的案例处理

最近帮助开发的同学处理了一个简单的问题,想通过这个问题来反思一下.     在一天下午的时候,开发的同事突然找到我说,有一个开发的数据库貌似有些表空间的问题,尽管这个数据库是划分在他们名下,但是对于数据库的操作他们还是没底,想让我帮忙看看,当然对于这类问题,我都脑海里闪现一两分钟搞定问题的成就感了.刚好下午有些事情,就叫了另外一个新同事去练练手,但是过了一会儿,新同事给我打来了电话,说现在好像有些问题,目前他们的库使用的是bigfile tablespace,对于这类表空间,添加数据文件是不行的

3小时搞定一个简单的MIS系统案例Northwind,有视频、有源代码下载、有真相

一.瞎扯框架.架构      楼主自从1998年从C语言.MASM.Foxbase开始学计算机开始接触这个行当16年以来,2001年干第一份与程序.软件.然后是各种屌的东西开始,差不多干了13年了,这13年来,用过VF\VC\VB\C#搞过N多N多的项目,记得在2002年.2003年那个疯狂并且操蛋的年代,在整天VB代码与各种SQL.各种Bug.各种需求敲打.各种吐血的需求变更.各种大半夜还坐在医院的小板凳的加班与折磨之中,慢慢的学会去思考,他妈的这是为什么,写了程序那么的折磨人,从那时开始,就

分析一个简单的变化给SEO所带来的三倍转换

对于seo优化,用户几乎总是以结果为导向,当然这也是人之常情,你所付出的东西,没有实效谁会愿意?"内容为王",那么结果授予了它的国王主权,这里和大家分享一个案例研究,一个简单的变化给seo带来了三倍销售转换. 2010年3月链接建设图   从上面的信息图表中,我们可以发现,每月站点有3200个独特游客,未来追踪线索,我们将最终高的目标锁定在"联系我们"页面,直截了当,每月站点有3807个访问者,最终只有56个目标落成,因此只能实现1.7%的转换量,很多网站都存在这样

一个简单闪动的hot小图标的js源代码

 具体如下: <div id="net_nav" style="position:relative;"><img id="hot" src="hot.jpg"  style="position:absolute; top:-4px; left:293px; z-index:999999;" /></div> 这里是写html的代码,把一个小hot图标显示出来. 下面是一个

javascript-建立一个简单的网站有什么技巧和方法

问题描述 建立一个简单的网站有什么技巧和方法 我是一个初学者,有一些HTML.CSS. jQuery.JavaScript的基础,但是想完整的建立一个简单的网站,感觉有些吃力,求大神们给小弟一些指导, 指明方向,目前相当迷茫........ 解决方案 学习一种服务器编程语言,比如C#/ASP.NET Java/SSH RubyOnRails Node.js Python PHP等等. 或者专注前端,使用现成的开源的应用.比如做论坛的discuz,做新闻网站的dedecms.wordpress 解

如何用Discuz搭建一个简单的分类信息站点

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 最近分类信息站点比较热门,很多站长都在考虑建立地方的分类信息站!网络上分类信息程序五花八门,有收费也有免费,有APS的也有PHP的,如何选择自然也是各有所好,就看站长的发展规划和承受能力了!这里我来简单说一下利用Discuz程序搭建一个简单的分类信息站点!首先要明确以个观点,分类信息并不是必须象58或者赶集那样的格式,一定得是房产要面积,招聘

《ANSYS FLUENT 16.0超级学习手册》——2.6 FLUENT的一个简单实例

2.6 FLUENT的一个简单实例 1.网格导入与处理 (1)在"开始"程序菜单中运行FLUENT主程序,出现FLUENT Launcher对话框,选择3D,其他保持默认设置,单击OK按钮进入FLUENT界面,读入网格文件jointpipe.msh,如图2-33所示. (2)检查网格文件.单击General面板中的Check按钮,如图2-34所示,对网格进行检查.需保证网格最小单元体积minimum volume不小于0,即没有负体积网格. (3)设置网格区域尺寸.单击General面