首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

J2EE里边使用freemark技术

2012-07-27 
J2EE里面使用freemark技术模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算

J2EE里面使用freemark技术
模板技术在现代的软件开发中有着重要的地位,而目前最流行的两种模板技术恐怕要算freemarker和velocity了,webwork2.2对两者都有不错的支持,也就是说在webwork2中你可以随意选择使用freemarker或velocity作为view,模板技术作为view的好处是很多,尤其和jsp比较起来优点更大,众所周知jsp需要在第一次被执行的时候编译成servlet,那么这个过程是很慢的,当然很多应用服务器都提供预编译的功能,但是在开发的时候仍然给我们程序员带来了很多痛苦,每次修改都要多几秒钟,那在一天的开发中就有很多时间浪费在jsp的编译上了。用 webwork in action的作者的话来说:“每次修改之后重新运行都要等等几秒是令人失望的,而频繁地修改jsp更是会令你的失望情绪变本加厉“。我们把模板技术引入到view中去可以带来更好的开发效率,而且模板的速度要比jsp快(虽然编译过后的jsp在速度上已经满足我的需求了,呵呵)。当然模板技术可以用在很多领域,可不只在view那里。我们可以通过模板技术来生成xml,生成jsp,生成java文件等等,说到这里,大家通常会使用模板技术用在公司的框架里,这样就可以很快速的生成添删改查的代码,需要的只是模板,其他比如还有邮件模板等等。
以上是模板的作用,当然模板还有其他领域的应用,希望能和大家多讨论,提高我们的生产效率。下面先为大家介绍freemark开发简单hello实例

第一步:将需要的freemark.jar包导入lib目录

第二步:在根目录下新建一个templates目录,在里面建立一个hello.ftl文件,文件内容如下:

   1. <html>     2. <head>     3.   <title>freemark example</title>     4. </head>     5. <body>hello ${user}!</body>     6. </html>  

第三步:在根目录下新建一个index.html文件,代码如下:
   1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">     2. <html>     3. <head>     4. <meta http-equiv="Content-Type" content="text/html; charset=utf8">     5. <title>Insert title here</title>     6. </head>     7. <body>     8. <hr>     9. <a href="test">调用hello模板</a>     10. </body>    11. </html>  

第四步:新建立一个Hello类,代码如下:
   1. package org.eagle;     2.      3. import java.io.*;     4. import java.util.*;     5.      6. import javax.servlet.ServletException;     7. import javax.servlet.http.*;     8.      9. import freemarker.template.Configuration;    10. import freemarker.template.Template;    11. import freemarker.template.TemplateException;    12.     13. public class Hello extends HttpServlet {    14.     private Configuration cfg;    15.     16.     public void init() {    17.         // 初始化FreeMarker配置    18.         // 创建一个Configuration实例    19.         cfg = new Configuration();    20.         // 设置FreeMarker的模版文件位置    21.         cfg.setServletContextForTemplateLoading(getServletContext(),    22.                 "templates");    23.     }    24.     25.     public void doGet(HttpServletRequest request, HttpServletResponse response)    26.             throws ServletException, IOException {    27.         // 建立数据模型    28.         Map root = new HashMap();    29.         // 放入对应数据key value    30.         root.put("user", "zdz");    31.         // 取得模版文件    32.         Template t = cfg.getTemplate("hello.ftl");    33.         // 开始准备生成输出    34.         // 使用模版文件的charset作为本页面的charset    35.         // 使用text/html MIME-type    36.         response.setContentType("text/html; charset=" + t.getEncoding());    37.         PrintWriter out = response.getWriter();    38.     39.         // 合并数据模型和模版,并将结果输出到out中    40.         try {    41.             t.process(root, out);// 用模板来开发servlet可以只在代码里面加入动态的数据    42.         } catch (TemplateException e) {    43.             throw new ServletException("处理Template模版中出现错误", e);    44.         }    45.     }    46. }  

第五步:在web-xml里面配置一下该servlet
   1.  <servlet>     2.     <servlet-name>Hello</servlet-name>     3.     <servlet-class>org.eagle.Hello</servlet-class>     4. </servlet>     5. <servlet-mapping>     6.     <servlet-name>Hello</servlet-name>     7.     <url-pattern>/test</url-pattern>     8. </servlet-mapping>  

第六步:启动服务器,打开index.html页面即可 1 楼 wind35 昨天   lz你好,我想请问对于fm的机制,是每次访问都要进行模板的数据渲染?还是第一次会渲染,以后的访问都是纯的静态页面了?

热点排行