Velocity笔记下

2014-11-24 00:41:27 · 作者: · 浏览: 0

Velocity与struts结合应用:
具体通过一个实际的例子来解释,例子选择以传统的注册模块为主(主要是joseph的书上就这么写的)

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

velocity

org.apache.velocity.tools.view.servlet.

VelocityViewServlet

toolbox

/WEB-INF/toolbox.xml

10

velocity

*.vm

其中velocity的servlet配置中的初始参数传入了toolbox.xml,该文件的具体内容如下:

< xml version="1.0" >

toolLoader

org.apache.velocity.tools.tools.ToolLoader

link

org.apache.velocity.tools.struts.LinkTool

msg

org.apache.velocity.tools.struts.MessageTool

errors

org.apache.velocity.tools.struts.ErrorsTool

form

org.apache.velocity.tools.struts.FormTool

这个xml文件的意义就在于定义了很多类,来串联整个struts和velocity还有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; };

}

该javabean有3个field属性,分别是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了。核心代码如下:

type="RegisterAction"

name="registerForm">

配置文件与传统的struts出奇的一致,唯一变化的就是在forward里的path写成了vm文件,而不是我们传统的jsp。

好了,写到现在,MVC中的M和C都完成了,该是velocity上场了――View层。

注册页面register.vm的核心代码:

username:

password:

again :

Success跳转页面success.vm:

Success

Registration Success!

Thanks for logging in $!registerForm.username

Try Another

其中只用到了一个$!registerForm.username。整个代码完成了,压根没用到什么context之类的东西。

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

下载ch17.zip即可。
html">http://www.ibm.com/developerworks/cn/java/j-sr1.html里George Franciscus讲的也很详细。