实时校验Struts.docx

上传人:b****4 文档编号:3736213 上传时间:2022-11-25 格式:DOCX 页数:34 大小:606.41KB
下载 相关 举报
实时校验Struts.docx_第1页
第1页 / 共34页
实时校验Struts.docx_第2页
第2页 / 共34页
实时校验Struts.docx_第3页
第3页 / 共34页
实时校验Struts.docx_第4页
第4页 / 共34页
实时校验Struts.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

实时校验Struts.docx

《实时校验Struts.docx》由会员分享,可在线阅读,更多相关《实时校验Struts.docx(34页珍藏版)》请在冰豆网上搜索。

实时校验Struts.docx

实时校验Struts

利用AJAX实现“实时校验”------验证用户注册时的用户名称是否重名的应用

1、验证用户注册时的用户名称是否重名的应用

(1)常规的实现方法

在某个用户注册的应用中,当用户注册时检查用户名是否可用,以前的做法是在旁边加一个按钮,点击“检查”,就向服务器发出请求,然后等待……服务器返回信息,继续操作。

(2)利用Ajax技术来实现以上的操作则不必等待服务器返回信息

用户输入用户名或企业名称的时候,当输入文本框失去焦点(用户的名称输入完毕)的时候,则会自动向服务器发出请求,用户继续做下面的操作,不必点击“检查”,也不必等待服务器返回信息,检查与用户操作是异步的,可同时进行。

当服务器信息返回的时候,会自动在面页相应位置显示返回信息,不必刷新页面,相当于局部刷新的效果。

(3)本例的时序图

1、新建一个Web应用的Project,名称为StrutsAJAXWebApp,同时再添加一个Web组件,其Context的名称为StrutsAJAXWebApp

将产生出下面的状态

2、添加Struts的系统包

3、在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"%>

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

htmllang="true">

base/>

userRegister.jsp

--

-->

formaction="/register.do"method="post">

hiddenproperty="action"value="2"/>

用户名称:

textproperty="userName"onblur="chkUserName()"style="background:

#FFFFFF"/>

#FF9900;display:

none">


用户密码:

passwordproperty="userPassWord"/>

submitproperty="submitButton"value="提交"disabled="true"/>

form>

html>

4、再添加JavaScript的函数文件common.js

设置编辑器中的编码方式

编程该common.js文件,其内容如下

varhttpRequest;

functionchkUserName()

{

varrequestURL="/StrutsAJAXWebApp/register.do?

userName="+document.all.userName.value;

httpRequest=getHTTPRequestObject();

httpRequest.onreadystatechange=processHttpResponse;

httpRequest.open("GET",requestURL,true);

httpRequest.send(null);

}

functiongetHTTPRequestObject()

{

varhttpRequestObject;

if(window.XMLHttpRequest)

{//Mozilla,Safari,...

httpRequestObject=newXMLHttpRequest();

}

elseif(window.ActiveXObject)

{//IE

try

{

httpRequestObject=newActiveXObject("Microsoft.XMLHTTP");

}

catch(e)

{

try

{

httpRequestObject=newActiveXObject("Msxml2.XMLHTTP");

}

catch(e2)

{

alert("您的浏览器有问题!

");

}

}

}

returnhttpRequestObject;

}

functionprocessHttpResponse()

{

 if(httpRequest.readyState==4)

{

 if(httpRequest.status==200)

{

   if(httpRequest.responseText!

="")

{//出现错误时

    document.getElementById("showStr").style.display="";

     document.getElementById("userName").style.background="#FF0000";

    document.getElementById("showStr").innerText=httpRequest.responseText;//来自响应的原始数据

document.getElementById("submitButton").disabled=true;

   }

else

{//没有出现错误时

    document.getElementById("userName").style.background="#FFFFFF";

    document.getElementById("showStr").style.display="none";

document.getElementById("submitButton").disabled=false;

   }

  }

elseif(httpRequest.status==404)

{

alert("没有找到与所请求的文件相匹配的资源!

");

}

  else

{

   alert("你所请求的页面发生异常,错误代码为:

"+httpRequest.status);

  }

 }

else

{

document.getElementById("showStr").innerHTML="正在检测用户名称的合法性,请稍等...";

}

}

注意:

中文问题

改变编码

5、添加ActionForm组件

com.px1987.webajax.actionform.RegisterActionForm,registerActionForm,org.apache.struts.action.ActionForm

userPassWord和userName

privateStringuserName;

privateStringuserPassWord;

Stringaction=null;

/*

*GeneratedbyMyEclipseStruts

*Templatepath:

templates/java/JavaClass.vtl

*/

packagecom.px1987.webajax.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,包名称为com.px1987.webajax.action

(2)/register

将产生出该Action

(3)编程该Action

packagecom.px1987.webajax.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.webajax.actionform.RegisterActionForm;

importjava.io.*;

publicclassRegisterActionextendsAction

{

publicActionForwardexecute(ActionMappingmapping,ActionFormform,

HttpServletRequestrequest,HttpServletResponseresponse)

{

RegisterActionFormregisterActionForm=(RegisterActionForm)form;//TODOAuto-generatedmethodstub

Stringaction=request.getParameter("action");

if(action.equals("1"))

{

doGet(request,response);

}

returnmapping.findForward("registerSuccess");

}

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

{

Stringaction=request.getParameter("action");

if(action.equals("1"))

{

}

StringuserName=request.getParameter("userName");

try

{

userName=newString(userName.getBytes("ISO-8859-1"),"gb2312");

}

catch(UnsupportedEncodingExceptione)

{

//TODO自动生成catch块

e.printStackTrace();

}

StringerrorText=null;

if(userName.equals("yang"))//实际应该改变为查找数据库表来判断有无该用户名存在

{

errorText="对不起,此用户名已经存在,请更换用户名注册!

";

}

else

{

errorText="";

}

response.setContentType("text/html;charset=GBK");

PrintWriterout;

try

{

out=response.getWriter();

out.print(errorText);

out.flush();

}

catch(IOExceptione)

{

//TODO自动生成catch块

e.printStackTrace();

}

}

}

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

6、执行该Web页面

(1)再部署该应用

(2)输入http:

//localhost:

8080/StrutsAJAXWebApp/userRegister.jsp

当我们输入用户名称为:

yang时,将出现下面的错误提示内容。

(3)如果所输入的用户名称不是为“yang”,此时的submit按钮将改变为“可用”的状态。

最后进行提交后则出现下面的正确提交的提示。

改进前面的Web应用以实际访问数据库表来获得验证的目标

1、再在本Project中添加一个数据连接接口组件

(1)数据连接组件的接口ConnectDBInterface,包名称为com.px1987.webajax.dao

(2)编程该接口

packagecom.px1987.webajax.dao;

importjava.sql.*;

publicinterfaceConnectDBInterface

{

publicConnectiongetConnection();

publicvoidcloseDBCon();

}

注意:

通过接口可以隐藏实现类中的细节,同时只向上层曝露公共方法。

2、为上面的接口ConnectDBInterface提供一个实现类

(1)类名称为ConnectDBBean,包名称为com.px1987.webajax.dao

(2)编程该ConnectDBBean类

packagecom.px1987.webajax.dao;

importjava.sql.*;

publicclassConnectDBBeanimplementsConnectDBInterface

{

/*下面为采用JDBC-ODBC桥方式

*/

StringJDBC_ODBC_URL="jdbc:

odbc:

WebStudyDSN";

StringJDBC_ODBC_DBDriver="sun.jdbc.odbc.JdbcOdbcDriver";

/*下面为采用JDBC-JTDS的驱动连接方式

*/

StringJDBC_JTDS_MSSqlServer_DBDriver="net.sourceforge.jtds.jdbc.Driver";

StringJDBC_MSSqlServer_URL="jdbc:

jtds:

sqlserver:

//127.0.0.1:

1433/WebStudyDB";

privatejava.sql.Connectioncon=null;

publicConnectDBBean()

{

JDBC_ODBC_Connect();

}

publicvoidJDBC_ODBC_Connect()

{

try

{

//Class.forName(JDBC_ODBC_DBDriver);

Class.forName(JDBC_JTDS_MSSqlServer_DBDriver);

}

catch(java.lang.ClassNotFoundExceptione)

{//在此先不考虑异常处理

System.out.println("不能正确地加载J

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1