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 阅读(2656) 评论(2)  编辑  收藏 所属分类: Java技术

评论

# re: Velocity学习笔记(下) 2011-04-07 19:54 durex

如果有NVelocity技术的经验之谈就好了,很期待啊,换模板是需要啊  回复  更多评论   

# re: Velocity学习笔记(下) 2011-04-08 09:07 changedi

下一步看看velocity的源码,主要是engine和tools的。笔记会继续做的  回复  更多评论   


只有注册用户登录后才能发表评论。


网站导航: