FreeMarker Quick Start

FreeMarker Quick Start


和所有的介绍一样,我们以Hello World开始,在以后所有的例子中,我们采用webwork/xwork作为Controller.

package  cn.martin.freemarker.quickstart.action;

import  com.opensymphony.xwork.ActionSupport;

/**
 * 
@author martin
 
*/

public   class  HelloAction  extends  ActionSupport  {
    
private String message;

    
public String getMessage() {
        
return message;
    }


    
public String execute() throws Exception {
        
this.message ="Hello World!";
        
return SUCCESS;
    }

}

我们的页面很简单,只是显示message
< html >
< head >
    
< title > FreeMarker Quick Start </ title >
</ head >

< body >

${message}

</ body >
</ html >
  • ${message}:称为interpolations,FreeMarker会在输出时用实际值进行替代,它会按以下的顺序查找message变量
    • The value stack
    • The action context
    • Request scope
    • Session scope
    • Application scope
    • Built-in variables

如果没有该变量,会抛出异常。

其他还有

  • FTL标记(FreeMarker模板语言标记):以<#开头,我们会在下面用到
  • 注释:包含在<#-和->之间

配置xwork.xml

<! DOCTYPE xwork PUBLIC "-//OpenSymphony Group//XWork 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-1.0.dtd"
>

< xwork >
    
< include  file ="webwork-default.xml" />

    
< package  name ="default"  extends ="webwork-default" >
        
< action  name ="demo"
                class
="cn.martin.freemarker.quickstart.action.HelloAction" >
            
< result  name ="success"  type ="freemarker" > /templates/demo.ftl </ result >
        
</ action >
    
</ package >
</ xwork >

webwork.properties
#  extension for actions
webwork.action.extension =

#  spring integration
#
webwork.objectFactory=spring
#
webwork.objectFactory.spring.autoWire=type

# ## Configuration reloading
#
 This will cause the configuration to reload xwork.xml when it is changed
webwork.configuration.xml.reload = true

# ## Load custom default resource bundles
webwork.custom.i18n.resources = default

# ## character encoding
webwork.i18n.encoding = UTF - 8
  1. 暂时我们用不到spring,没有必要引人
  2. 至于后缀,个人爱好,我不喜欢那么多的东西,没有任何后缀.

工程整体结构如下:

web.xml

<? xml version="1.0" encoding="UTF-8" ?>

<! DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
        "http://java.sun.com/dtd/web-app_2_3.dtd"
>
< web-app >
    
< filter >
        
< filter-name > webwork </ filter-name >
        
< filter-class > com.opensymphony.webwork.dispatcher.FilterDispatcher </ filter-class >
    
</ filter >

    
< filter-mapping >
        
< filter-name > webwork </ filter-name >
        
< url-pattern > /* </ url-pattern >
    
</ filter-mapping >

    
< welcome-file-list >
        
< welcome-file > index.html </ welcome-file >
        
< welcome-file > demo.action </ welcome-file >
    
</ welcome-file-list >
    
< taglib >
        
< taglib-uri > webwork </ taglib-uri >
        
< taglib-location > /WEB-INF/lib/webwork.jar </ taglib-location >
    
</ taglib >
</ web-app >

OK!deploy到server看一下结果:

Next:继续前进

我们来将页面做的更友好一些,用户输入姓名,显示Hello + 用户名

< html >
< head >
    
< title > FreeMarker Quick Start </ title >
</ head >

< body >

< #if  userName?exists&&userName?has_content >
       Hello ${userName}!
</ #if >


< form  action ="demo"  method ="post" >
    Input your name:
< input  type ="text"  size ="8"  name ="userName" />
    
< input  type ="submit"  value ="Get Words" />
</ form >

</ body >
</ html >

在该页面中,我们见到一些奇怪的表达式
< # if  userName ? exists && userName ? has_content >
       Hello $
{userName} !
</ # if >

这是FreeMarker的表达式,暂时不管它,先了解一下即可,以后会有专门的介绍.

  1. userName?exists 判断该变量是否存在
  2. userName?has_content 判断该变量是否不为null并且不为empty

修改Action

package  cn.martin.freemarker.quickstart.action;

import  com.opensymphony.xwork.ActionSupport;

/ /**
 * 
@author martin
 
*/

public   class  HelloAction  extends  ActionSupport  {
    
private String userName;

    
public void setUserName(String userName) {
        
this.userName = userName;
    }


    
public String getUserName() {
        
return userName;
    }


    
public String execute() throws Exception {
        System.out.println(
"HelloAction.execute() begin");
        
return SUCCESS;
    }

}

结果如下:

代码:freemarker.rar 去掉了webwork/xwork/freemarker lib,请自行添上。

参考:
xwork:http://www.opensymphony.com/xwork
webwork:http://www.opensymphony.com/
freemarker:http://freemarker.org/

你可能感兴趣的:(FreeMarker Quick Start)