<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Change Dir

    先知cd——熱愛生活是一切藝術(shù)的開始

    統(tǒng)計(jì)

    留言簿(18)

    積分與排名

    “牛”們的博客

    各個(gè)公司技術(shù)

    我的鏈接

    淘寶技術(shù)

    閱讀排行榜

    評(píng)論排行榜

    Velocity學(xué)習(xí)筆記(下)

     

    Velocity筆記下

    Velocitystruts結(jié)合應(yīng)用:

    具體通過一個(gè)實(shí)際的例子來解釋,例子選擇以傳統(tǒng)的注冊(cè)模塊為主(主要是joseph的書上就這么寫的)

    首先,web.xml文件配置情況struts部分就不講了,velocity的配置如下所示:

    <servlet>

    <servlet-name>velocity</servlet-name>

    <servlet-class>org.apache.velocity.tools.view.servlet.

    VelocityViewServlet</servlet-class>

    <init-param>

    <param-name>toolbox</param-name>

    <param-value>/WEB-INF/toolbox.xml</param-value>

    </init-param>

    <load-on-startup>10</load-on-startup>

    </servlet>

    <!-- Action Servlet Mapping -->

    <servlet-mapping>

    <servlet-name>velocity</servlet-name>

    <url-pattern>*.vm</url-pattern>

    </servlet-mapping>

    其中velocityservlet配置中的初始參數(shù)傳入了toolbox.xml,該文件的具體內(nèi)容如下:

    <?xml version="1.0"?>

    <toolbox>

    <tool>

    <key>toolLoader</key>

    <class>org.apache.velocity.tools.tools.ToolLoader</class>

    </tool>

    <tool>

    <key>link</key>

    <class>org.apache.velocity.tools.struts.LinkTool</class>

    </tool>

    <tool>

    <key>msg</key>

    <class>org.apache.velocity.tools.struts.MessageTool</class>

    </tool>

    <tool>

    <key>errors</key>

    <class>org.apache.velocity.tools.struts.ErrorsTool</class>

    </tool>

    <tool>

    <key>form</key>

    <class>org.apache.velocity.tools.struts.FormTool</class>

    </tool>

    </toolbox>

    這個(gè)xml文件的意義就在于定義了很多類,來串聯(lián)整個(gè)strutsvelocity還有javabean等各個(gè)元素。

    接著就開始配置struts了,首先考慮到這個(gè)應(yīng)用,struts的第一步就是要寫form了。首先構(gòu)建一個(gè)RegisterForm。代碼如下,這個(gè)javabean用來當(dāng)做model定義數(shù)據(jù)。

    package app;

    import org.apache.struts.action.*;

    publicclass RegisterForm extends ActionForm {

     protected String username;

     protected String password;

     protected String password2;

     public String getUsername() { returnthis.username; }

     public String getPassword() { returnthis.password; }

     public String getPassword2() { returnthis.password2; }

     publicvoid setUsername(String username) { this.username = username; };

     publicvoid setPassword(String password) { this.password = password; };

     publicvoid setPassword2(String password) { this.password2 = password; };

    }

    javabean3個(gè)field屬性,分別是username用戶名,password密碼和password2驗(yàn)證密碼。

    接著寫控制處理邏輯RegisterAction。代碼如下:

    package app;

    import org.apache.struts.action.*;

    import javax.servlet.http.*;

    import java.io.*;

    publicclass RegisterAction extends Action {

     public ActionForward perform(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) {

        RegisterForm rf = (RegisterForm) form;

        String username = rf.getUsername();

        String password = rf.getPassword();

        String password2 = rf.getPassword2();

        if (password.equals(password2)) {

            return mapping.findForward("success");

        }

        return mapping.findForward("failure");

     }

    }

    通過form表單讀入數(shù)據(jù),如果密碼和驗(yàn)證密碼相同,那么就跳到success,否則是failure,這個(gè)邏輯非常簡(jiǎn)單。Struts中也看不出任何的velocity相關(guān)(那當(dāng)然,這就叫低耦合,各干各的,分層處理)

    然后該配置熟悉的struts-config.xml了。核心代碼如下:

    <struts-config>

    <form-beans>

    <form-bean name="registerForm" type="RegisterForm"/>

    </form-beans>

    <action-mappings>

    <action path="/struts"

    type="RegisterAction"

    name="registerForm">

    <forward name="success" path="/success.vm"/>

    <forward name="failure" path="/failure.vm"/>

    </action>

    </action-mappings>

    </struts-config>

    配置文件與傳統(tǒng)的struts出奇的一致,唯一變化的就是在forward里的path寫成了vm文件,而不是我們傳統(tǒng)的jsp

    好了,寫到現(xiàn)在,MVC中的MC都完成了,該是velocity上場(chǎng)了——View層。

    注冊(cè)頁面register.vm的核心代碼:

    <form action="struts.do" method="post">

     username: <input type="text" name="username"/><BR>

     password: <input type="text" name="password"/><BR>

     again   : <input type="text" name="password2"/><BR>

    <input type="submit" name="submit" value="Register"/>

    </form>

    Success跳轉(zhuǎn)頁面success.vm

    <HTML>

    <HEAD>

     <TITLE>Success</TITLE>

    </HEAD>

    <BODY>

     Registration Success!

     Thanks for logging in $!registerForm.username

     <P><A href="register.vm">Try Another?</A></P>

    </BODY>

    </HTML>

    其中只用到了一個(gè)$!registerForm.username。整個(gè)代碼完成了,壓根沒用到什么context之類的東西。

    源代碼來自
    http://www.wiley.com//legacy/compbooks/gradecki/apache/index.html

    下載ch17.zip即可。
    http://www.ibm.com/developerworks/cn/java/j-sr1.htmlGeorge Franciscus講的也很詳細(xì)。

    posted on 2011-04-07 15:43 changedi 閱讀(2680) 評(píng)論(2)  編輯  收藏 所屬分類: Java技術(shù)

    評(píng)論

    # re: Velocity學(xué)習(xí)筆記(下) 2011-04-07 19:54 durex

    如果有NVelocity技術(shù)的經(jīng)驗(yàn)之談就好了,很期待啊,換模板是需要啊  回復(fù)  更多評(píng)論   

    # re: Velocity學(xué)習(xí)筆記(下) 2011-04-08 09:07 changedi

    下一步看看velocity的源碼,主要是engine和tools的。筆記會(huì)繼續(xù)做的  回復(fù)  更多評(píng)論   

    主站蜘蛛池模板: 无码永久免费AV网站| 999国内精品永久免费视频| 久久亚洲精品无码VA大香大香| 日本免费电影一区| 最新欧洲大片免费在线| 亚洲一区免费视频| 24小时日本电影免费看| 亚洲黄色一级毛片| 亚洲AV色香蕉一区二区| 国产亚洲av人片在线观看| 亚洲av高清在线观看一区二区| 成人免费午夜无码视频| 成人免费看片又大又黄| 免费夜色污私人影院网站电影| 亚洲AV性色在线观看| 亚洲AV成人一区二区三区观看 | 一级黄色免费大片| 两个人的视频www免费| 亚洲av无码国产精品夜色午夜| 国产亚洲精品资源在线26u| 亚洲国产精品无码中文字| 亚洲综合自拍成人| 日韩亚洲不卡在线视频中文字幕在线观看 | 日本免费xxxx色视频| 国产一卡二卡≡卡四卡免费乱码| 在线免费观看韩国a视频| 久久国产成人亚洲精品影院| 亚洲国产精品福利片在线观看| 中文字幕亚洲第一在线| 亚洲综合中文字幕无线码| 免费无遮挡无码视频在线观看 | 亚洲一区二区久久| 99麻豆久久久国产精品免费| 亚洲最大免费视频网| 日韩亚洲国产二区| 在线精品亚洲一区二区| 日本xxwwxxww在线视频免费| 亚洲AV永久青草无码精品| 亚洲欧美日韩一区二区三区| 国产精品免费久久久久电影网| 成人免费在线观看网站|