近期研究了一下webwork和jstl,发现二者组合开发页面流真是很简单的。因为没有找到类似的文章,我就抛砖引玉了。
通常我们只提webwork,实际上使用的时候,我们会用到两个项目webwork和xwork。webwork的功能如下:
1。提供页面展现的标签
2。负责拦截向后台发送的action请求,
3。将前台的form请求转化为本地的上下文,并将本地返回的上下文设置到request/servlet上下文中
4。将action请求派发给xwork定义的action或action方法。
5。返回应答信息
xwork的功能:
1。拦截器功能,webwork传递过来的请求和上下文转化为action的属性或特定的model对象(类似struts的actionform),并将model数据或action属性设置到本地上下文中
2。执行action,完成业务逻辑。
webwok这种划分,使得web开发和后台应用的开发可以完全分开,后台可以进行独立的测试,action完全脱离web环境。
举一个做login的例子:
页面login.html:
用户名:
密 码:
开发action:
publicclassLoginActionimplementsAction,ModelDriven{
privatefinalstaticStringLOGIN_FAIL="loginfail";
UserloginInfo=newUser();
publicStringexecute()throwsException{
if(validate(loginInfo)){
//将当前登录的用户名保存到Session
ActionContextctx=ActionContext.getContext();
Mapsession=ctx.getSession();
session.put("login_user_account",loginInfo.getAccount());
returnSUCCESS;
}else{
loginInfo.setErrorMsg("Username/PasswordError!");
returnLOGIN_FAIL;
}
}
publicStringreLogin()throwsException{
returnLOGIN_FAIL;
}
publicObjectgetModel(){
returnloginInfo;
}
}
配置文件xwork.xml
webwork-default">
/index.htm
/login.htm
对于本页面,简单到登陆页面可以使用html,对于由信息显示的页面可以配合jstl来开发Jsp(2.0).页面也十分简单,举个显示用户信息的例子:
在jsp2.0中,可以直接使用EL语言,这样你就可以使用${userInfo.name},来表示action的model-userInfo包含的信息,注意:这里需要使用一个拦截器,将model属性设置到request/serlvet的上下文中。
<script type="text/javascript"> </script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>