资源描述
在Eclipse中开发基于DWR的AJAX的Web应用Struts2.docx
《在Eclipse中开发基于DWR的AJAX的Web应用Struts2.docx》由会员分享,可在线阅读,更多相关《在Eclipse中开发基于DWR的AJAX的Web应用Struts2.docx(37页珍藏版)》请在冰豆网上搜索。
在Eclipse中开发基于DWR的AJAX的Web应用Struts2
利用DWR实现“实时校验”------验证用户注册时的用户名称是否重名的应用
1、验证用户注册时的用户名称是否重名的应用
(1)常规的实现方法
在某个用户注册的应用中,当用户注册时检查用户名是否可用,以前的做法是在旁边加一个按钮,点击“检查”,就向服务器发出请求,然后等待……服务器返回信息,继续操作。
(2)利用Ajax技术来实现以上的操作则不必等待服务器返回信息
用户输入用户名或企业名称的时候,当输入文本框失去焦点(用户的名称输入完毕)的时候,则会自动向服务器发出请求,用户继续做下面的操作,不必点击“检查”,也不必等待服务器返回信息,检查与用户操作是异步的,可同时进行。
当服务器信息返回的时候,会自动在面页相应位置显示返回信息,不必刷新页面,相当于局部刷新的效果。
(3)本例的时序图
2、在Web应用中添加一个包含有注册表单的JSP页面
(1)页面名称为userRegister.jsp
(2)编辑该JSP以添加一个实现注册的表单,并对用户在注册表单中所输入的用户的名称进行实时检查
<%@pagelanguage="java"pageEncoding="GB18030"%>
<%@tagliburi="http:
//struts.apache.org/tags-bean"prefix="bean"%>
<%@tagliburi="http:
//struts.apache.org/tags-html"prefix="html"%>
<%@tagliburi="http:
//struts.apache.org/tags-logic"prefix="logic"%>
<%@tagliburi="http:
//struts.apache.org/tags-tiles"prefix="tiles"%>
<%
StringwebContext=request.getContextPath();
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
htmllang="true">
base/>
userRegister.jsp
/webapp.js'>
--
-->
formaction="/register.do"method="post">
hiddenproperty="action"value="2"/>
用户名称:
textproperty="userName"onblur="checkUserNameValid(this.value)"style="background:
#FFFFFF"/>
#FF9900;display:
none">
用户密码:
passwordproperty="userPassWord"/>
submitproperty="submitButton"value="提交"disabled="true"/>
form>
html>
3、在webapp.js中添加下面的方法
functioncheckUserNameValid(inputedUserName)
{
userInfoManageBean.checkUserNameValid(inputedUserName,checkUserNameValidCallBackFun);
}
checkUserNameValidCallBackFun=function(returnCheckUserNameBoolean)
{
if(!
returnCheckUserNameBoolean)
{
document.getElementById("userName").style.background="#FFFFFF";
$("showStr").style.display="none";//$=document.getElementById
$("submitButton").disabled=false;
}
else
{
$("showStr").style.display="";
$("userName").style.background="#FF0000";
$("showStr").innerText="您所输入的用户名称已经存在了!
";
$("submitButton").disabled=true;
}
}
5、添加ActionForm组件
com.px1987.dwrexampl.actionform.RegisterActionForm,registerActionForm,org.apache.struts.action.ActionForm
userPassWord和userName
privateStringuserName;
privateStringuserPassWord;
Stringaction=null;
/*
*GeneratedbyMyEclipseStruts
*Templatepath:
templates/java/JavaClass.vtl
*/
packagecom.px1987.dwrexampl.actionform;
importjavax.servlet.http.HttpServletRequest;
importorg.apache.struts.action.ActionErrors;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionMapping;
/**
*MyEclipseStruts
*Creationdate:
09-21-2007
*
*XDocletdefinition:
*@struts.formname="registerActionForm"
*/
publicclassRegisterActionFormextendsActionForm{
/*
*Generatedfields
*/
/**userNameproperty*/
privateStringuserName;
/**userPassWordproperty*/
privateStringuserPassWord;
Stringaction=null;
/*
*GeneratedMethods
*/
/**
*Methodvalidate
*@parammapping
*@paramrequest
*@returnActionErrors
*/
publicActionErrorsvalidate(ActionMappingmapping,
HttpServletRequestrequest){
//TODOAuto-generatedmethodstub
returnnull;
}
/**
*Methodreset
*@parammapping
*@paramrequest
*/
publicvoidreset(ActionMappingmapping,HttpServletRequestrequest){
//TODOAuto-generatedmethodstub
}
/**
*ReturnstheuserName.
*@returnString
*/
publicStringgetUserName(){
returnuserName;
}
/**
*SettheuserName.
*@paramuserNameTheuserNametoset
*/
publicvoidsetUserName(StringuserName){
this.userName=userName;
}
/**
*ReturnstheuserPassWord.
*@returnString
*/
publicStringgetUserPassWord(){
returnuserPassWord;
}
/**
*SettheuserPassWord.
*@paramuserPassWordTheuserPassWordtoset
*/
publicvoidsetUserPassWord(StringuserPassWord){
this.userPassWord=userPassWord;
}
publicStringgetAction(){
returnaction;
}
publicvoidsetAction(Stringaction){
this.action=action;
}
}
5、添加一个Action以对该表单进行响应和处理
(1)类名称为RegisterAction,Type名称为com.px1987.dwrexampl.action.RegisterAction
(2)/register
将产生出该Action
(3)编程该Action
packagecom.px1987.dwrexampl.action;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importorg.apache.struts.action.Action;
importorg.apache.struts.action.ActionForm;
importorg.apache.struts.action.ActionForward;
importorg.apache.struts.action.ActionMapping;
importcom.px1987.dwrexampl.actionform.RegisterActionForm;
importjava.io.*;
publicclassRegisterActionextendsAction
{
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse)
{
RegisterActionFormregisterActionForm=(RegisterActionForm)form;//TODOAuto-generatedmethodstub
returnmapping.findForward("registerSuccess");
}
}
7、添加registerSuccess.jsp
<%@pagelanguage="java"pageEncoding="GB18030"%>
<%@tagliburi="http:
//struts.apache.org/tags-bean"prefix="bean"%>
<%@tagliburi="http:
//struts.apache.org/tags-html"prefix="html"%>
<%@tagliburi="http:
//struts.apache.org/tags-logic"prefix="logic"%>
<%@tagliburi="http:
//struts.apache.org/tags-tiles"prefix="tiles"%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
htmllang="true">
base/>
registerSuccess.jsp
--
-->
您的同步的注册请求被正确地处理了!
html>
8、registerSuccess
5、添加一个实现对用户名称等信息进行检查的业务接口
(1)业务组件接口为UserInfoManageInterface,包名称为com.px1987.dwrexampl.model
在该接口中定义下面的方法
packagecom.px1987.dwrexampl.model;
publicinterfaceUserInfoManageInterface
{
publicbooleancheckUserNameValid(StringuserName);
}
6、添加一个实现对用户名称等信息进行检查的业务接口的实现类组件
(1)实现类UserInfoManageBean,包名称为com.px1987.dwrexampl.model
(2)编程该实现类
packagecom.px1987.dwrexampl.model;
publicclassUserInfoManageBeanimplementsUserInfoManageInterface
{
publicUserInfoManageBean()
{
//TODO自动生成构造函数存根
}
publicbooleancheckUserNameValid(StringuserName)
{
booleanokOrNot=false;
if(userName.equals("yang"))//实际应该改变为对数据库系统的访问
{
okOrNot=true;
}
else
{
okOrNot=false;
}
returnokOrNot;
}
}
7、公开该业务类中的各个方法
(1)在dwr-timeBean.xml文件中添加下面的内容
(2)文件的完整内容为下面
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEdwrPUBLIC"-//GetAheadLimited//DTDDirectWebRemoting2.0//EN""http:
//www.getahead.ltd.uk/dwr//dwr20.dtd">
8、查看我们的业务类所对应的*.js文件
(1)再部署该应用
(2)输入http:
//localhost:
8080/DWRWebTest/dwr/index.html进入DWR的在线测试页面
然后点击上面的“userInfoManageBean”的超链接,将出现下面的内容
从而获得在页面中对该JavaBean进行远程引用时的*.js文件名称
(3)也可以对我们的业务组件中的方法在线测试
或者
9、在我们的userRegister.jsp中包含上面的各个*.js文件
<%@pagelanguage="java"pageEncoding="GB18030"%>
<%@tagliburi="http:
//struts.apache.org/tags-bean"prefix="bean"%>
<%@tagliburi="http:
//struts.apache.org/tags-html"prefix="html"%>
<%@tagliburi="http:
//struts.apache.org/tags-logic"prefix="logic"%>
<%@tagliburi="http:
//struts.apache.org/tags-tiles"prefix="tiles"%>
<%
StringwebContext=request.getContextPath();
%>
DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
htmllang="true">
base/>
userRegister.jsp
/dwr/interface/userInfoManageBean.js'>
/dwr/engine.js'>
/dwr/util.js'>
/webapp.js'>
--
-->
formaction="/register.do"method="post">
hiddenproperty=