躺在沙灘上的小豬

          快樂的每一天

          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/

          posted on 2006-01-17 19:12 martin xus 閱讀(1087) 評論(0)  編輯  收藏 所屬分類: webwork/xwork

          主站蜘蛛池模板: 双牌县| 古蔺县| 徐水县| 霍山县| 顺昌县| 麻栗坡县| 出国| 芒康县| 英超| 清苑县| 勃利县| 商都县| 万荣县| 邹城市| 惠安县| 综艺| 米脂县| 阜宁县| 延边| 疏附县| 黎平县| 广州市| 龙川县| 行唐县| 福泉市| 沅陵县| 英吉沙县| 广宁县| 济南市| 册亨县| 方山县| 岚皋县| 富平县| 紫云| 鹿邑县| 丰都县| 博爱县| 尼木县| 三门峡市| 高邮市| 宁德市|