`
442136713
  • 浏览: 51695 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

struts2+FreeMarker -FreeMarker学习笔记 -gcode

阅读更多
struts2+FreeMarker -FreeMarker学习笔记 -gcode
struts2改用FreeMarker作为表示层。
FreeMarker不支持使用taglib指令来导入标签库,但struts2提供了额外的支持。
步骤如下:
1,将要用的.tld文件复制到web应用中。
2,web.xml中启动JSPSupportServlet。
<servlet>
   <servlet-name>JspSupportServlet</servlet-name>
   <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class>
   <load-on-startup>1</load-on-startup>
</servlet>
3,在FreeMarker模板中使用assign指令导入标签库。
<#assign s=JspTaglibs["/WEB-INF/struts-tags.tld"] />
就可以使用标签了。
<@s.form action="Login.action">
<@s.textfield name="username" label="用户名"/>
<@s.textfield name="password" label="密码"/>
<@s.submit value="提交"/>
</@s.form>
4,web容器默认不处理模板页面,必须通过struts2。
我们将模板放到WEB-INF/ftl下,
在struts.xml增加如下配置,
        <action name="*">
            <result type="freemarker">/WEB-INF/ftl/{1}.ftl</result>
        </action>
======================================
struts2解析模板中的变量顺序如下:
1,模板内建变量
2,ValueStack中的变量
3,ActionContext中的变量
4,HttpServletRequest范围变量
5,HttpSession范围变量
6,ServletContext范围变量
--------
FreeMarker模板内建变量如下:
1,stack,${stack.findString('ognl expr')}。
2,action,代表刚执行过的Action实例。
3,response,res,代表HttpServletResponse实例。
4,request,req。
5,session,application。
6,base,代表用户请求的上下文路径。
------------
<#if Application.attName?exists>
${Application.attName}
</#if>
或者
<@s.property value="%{#application.attName}" />
对于Request,不仅可以访问属性,还可以访问参数。
<@s.property value="%{#parameters.paraName}" />
此外访问ValueStack上下文参数,可以${stack.findValue('#contextParamName')}
或者<@s.property value="%{#contextParamName}" />
=========================
=========================
文本,注释<#-- -->插值${}或者#{},FTL指令<#指令名 >,如果是用户指令则用@符号。
http://freemarker.sourceforge.net/docs/index.html
-------------------
模板文件test.ftl--
${name},你好!${msg}
合并程序--
package lee;import java.util.*;
import java.io.*;
import freemarker.template.*;public class HelloFreeMarker
{
    private Configuration cfg;
   
    public void init() throws Exception
{
        //初始化FreeMarker配置
        //创建一个Configuration实例
        cfg = new Configuration();
        //设置FreeMarker的模版文件位置
        cfg.setDirectoryForTemplateLoading(new File("templates"));
    }
   
public void process()throws Exception
{
        Map root = new HashMap();
        root.put("name", "FreeMarker!");
   root.put("msg" , "您已经完成了第一个FreeMarker的示例");
        Template t = cfg.getTemplate("test.ftl");
        t.process(root, new OutputStreamWriter(System.out));}public static void main(String[] args)throws Exception
{
   HelloFreeMarker hf = new HelloFreeMarker();
   hf.init();
   hf.process();
}}
------------------------------------
web应用中
模板文件test.ftl--
<html>
<head>
<title>FreeMarker的HelloWorld</title>
</head>
<body>
${message}
</body>
</html>
合并程序--
package lee;import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import freemarker.template.*;public class HelloServlet extends HttpServlet
{
    private Configuration cfg;
   
    public void init()
{
        //初始化FreeMarker配置
        //创建一个Configuration实例
        cfg = new Configuration();
        //设置FreeMarker的模版文件位置
        cfg.setServletContextForTemplateLoading(getServletContext(), "WEB-INF/templates");
    }
   
    public void service(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException
{       
        //建立数据模型
        Map root = new HashMap();
        root.put("message", "Hello FreeMarker!");    
        //取得模版文件
        Template t = cfg.getTemplate("test.ftl");       
        // 开始准备生成输出
        // - 使用模版文件的charset作为本页面的charset
        // - 使用text/html MIME-type
        response.setContentType("text/html; charset=" + t.getEncoding());
        Writer out = response.getWriter();
       
        //合并数据模型和模版,并将结果输出到out中
        try
   {
            t.process(root, out);
        }
   catch (TemplateException e)
   {
            throw new ServletException("处理Template模版中出现错误", e);
        }
    }
}

 

转载自http://hi.baidu.com/hxzon/blog/item/5ca0364e269878ccd0c86a5c.html

分享到:
评论

相关推荐

    hibernate3+struts2+spring2+freemarker 主流技术架构 实例

    • 采用hibernate3+struts2+spring2+freemarker主流技术架构 • 懂html就能建站,提供最便利、合理的使用方式 • 强大、灵活的标签,用户自定义显示内容和显示方式 • 在设计上自身预先做了搜索引擎优化,增强对...

    struts2+hibernate+freemarker项目实例

    在学习和使用这个项目实例时,你需要理解每个框架的核心概念和工作原理,如Struts2的动作(Action)和结果(Result),Hibernate的实体(Entity)、会话(Session)和查询,以及FreeMarker的模板语法。此外,还需要...

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版

    struts2+spring2.5+hibernate3.2 + freemarker 全新功能实现的增删改查+freemarker 摸版 struts2 的方式自己去看简单。 spring2.5 是用注释来注入 hibernate3.2 是用ejb3注解映射关系 hibernate3 +个属性可以自动...

    JEECMS源码(hibernate3+struts2+spring2+freemarker +jquery +json等技术)

    JEECMS使用目前java主流技术架构:hibernate3+struts2+spring2+freemarker。AJAX使用jquery和json实现。视图层并没有使用传统的JSP技术,而是使用更为专业、灵活、高效freemarker。 数据库使用MYSQL,并可支持orcale...

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    总结起来,"spring+hibernate+struts2+freemarker SSH2 新闻发布系统"是一个基础的Java Web项目,展示了SSH2框架组合在实际开发中的应用。开发者可以通过学习这个小例子,理解如何整合这些技术来构建更复杂的Web应用...

    Struts2+Spring2.5+Hibernate3+Freemarker整合

    整合S2SH+Freemarker,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    struts2+FCKeditor-2.3

    Struts2支持多种视图技术,包括JSP、FreeMarker和Velocity等。 3. **集成过程**:在Struts2中集成FCKeditor,首先需要将FCKeditor的JavaScript库和相关资源文件(如CSS、图片等)部署到Web应用的公共目录下。然后,...

    Struts2+Spring2.5+Hibernate3+Freemarker框架整合

    整合S2SH+Freemarker+oscache,后台用Spring管理各个bean,Hibernate做数据库持久化,viewer用Freemarker。整合中对Struts2,Hibernate,Spring都采用Annotation进行注解类。

    freemarker-2.3.31-API文档-中文版.zip

    赠送jar包:freemarker-2.3.31.jar; 赠送原API文档:freemarker-2.3.31-javadoc.jar; 赠送源代码:freemarker-2.3.31-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.31.pom; 包含翻译后的API文档:...

    Struts2+FreeMarker部署

    Struts2和FreeMarker是两种在Java Web开发中广泛应用的技术。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,用于构建企业级Web应用程序,而FreeMarker则是一个模板引擎,用于生成动态HTML或...

    struts2+freemarker 生成静态页面

    Struts2和FreeMarker是Java Web开发中两个重要的框架,它们常常被一起使用来构建动态网站。Struts2是一个基于MVC(Model-View-Controller)设计模式的开源框架,而FreeMarker则是一个模板引擎,主要用于生成动态内容...

    struts2+freemarker

    Struts2 和 Freemarker 是两个在Java Web开发中广泛应用的技术,它们共同构成了强大的MVC...通过对这个文件的深入学习和实践,开发者可以更熟练地掌握Struts2和Freemarker的结合使用,提升Web应用开发的效率和质量。

    Struts2+freemarker+flash 采集摄像头头像

    在“Struts2+freemarker+flash 采集摄像头头像”这个场景中,Freemarker可能会被用来动态生成显示用户头像的页面,根据后台传递的数据(例如头像URL)来渲染页面。 Flash在Web开发中的角色主要是提供多媒体支持,...

    struts2+freemarker 国际化

    Struts2和Freemarker是两个非常流行的Java Web开发框架,它们经常被一起使用来构建动态、交互式的Web应用程序。国际化(Internationalization,通常缩写为i18n)是软件开发中的一个重要概念,它允许应用程序支持不同...

    struts2+freemarker学习案例

    在提供的"struts2freemarker"压缩包中,可能包含了以下内容: - Action类:实现了业务逻辑和跳转到FreeMarker模板的配置。 - FreeMarker模板(.ftl文件):包含了HTML结构和FreeMarker指令,用于展示数据。 - Struts...

    s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单.rar

    本项目“s2sh+freemarker+jquery+jquery-treeview 无限级树形菜单”就是这样一个解决方案,它整合了多种技术来实现这一功能。 首先,我们来看“s2sh”。这是Struts2、Spring和Hibernate三者的简称,它们分别是MVC...

    struts+freemarker 源码例

    在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker来渲染结果。例如: ```xml &lt;result type="freemarker"&gt;/...

    freemarker-2.3.30-API文档-中文版.zip

    赠送jar包:freemarker-2.3.30.jar; 赠送原API文档:freemarker-2.3.30-javadoc.jar; 赠送源代码:freemarker-2.3.30-sources.jar; 赠送Maven依赖信息文件:freemarker-2.3.30.pom; 包含翻译后的API文档:...

    struts1+spring+hibernate+freemarker一个小例子

    在这个“struts1+spring+hibernate+freemarker一个小例子”中,我们将探讨这四个组件如何协同工作,以及它们各自的核心功能。 首先,Struts1是MVC(模型-视图-控制器)设计模式的一个实现,主要用于处理HTTP请求和...

Global site tag (gtag.js) - Google Analytics