Change Dir

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

          統計

          留言簿(18)

          積分與排名

          “牛”們的博客

          各個公司技術

          我的鏈接

          淘寶技術

          閱讀排行榜

          評論排行榜

          Velocity學習筆記(下)

           

          Velocity筆記下

          Velocitystruts結合應用:

          具體通過一個實際的例子來解釋,例子選擇以傳統的注冊模塊為主(主要是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配置中的初始參數傳入了toolbox.xml,該文件的具體內容如下:

          <?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>

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

          接著就開始配置struts了,首先考慮到這個應用,struts的第一步就是要寫form了。首先構建一個RegisterForm。代碼如下,這個javabean用來當做model定義數據。

          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; };

          }

          javabean3field屬性,分別是username用戶名,password密碼和password2驗證密碼。

          接著寫控制處理邏輯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表單讀入數據,如果密碼和驗證密碼相同,那么就跳到success,否則是failure,這個邏輯非常簡單。Struts中也看不出任何的velocity相關(那當然,這就叫低耦合,各干各的,分層處理)

          然后該配置熟悉的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>

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

          好了,寫到現在,MVC中的MC都完成了,該是velocity上場了——View層。

          注冊頁面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跳轉頁面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>

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

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

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

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

          評論

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

          如果有NVelocity技術的經驗之談就好了,很期待啊,換模板是需要啊  回復  更多評論   

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

          下一步看看velocity的源碼,主要是engine和tools的。筆記會繼續做的  回復  更多評論   

          主站蜘蛛池模板: 泗洪县| 根河市| 潢川县| 宝清县| 三亚市| 通河县| 商河县| 鄂州市| 安乡县| 阿城市| 揭阳市| 五大连池市| 漳浦县| 任丘市| 灵台县| 马山县| 张家口市| 西盟| 普兰店市| 祁东县| 红桥区| 万安县| 剑川县| 五原县| 北安市| 宜都市| 汉寿县| 小金县| 屏东县| 永靖县| 丰台区| 乌兰察布市| 兴宁市| 枣阳市| 全南县| 英超| 比如县| 上犹县| 枣强县| 鹤山市| 扎赉特旗|