跟我学AJAX技术如何应用AJAX实现实时校验的Web应用示例第三部分.docx
《跟我学AJAX技术如何应用AJAX实现实时校验的Web应用示例第三部分.docx》由会员分享,可在线阅读,更多相关《跟我学AJAX技术如何应用AJAX实现实时校验的Web应用示例第三部分.docx(15页珍藏版)》请在冰豆网上搜索。
跟我学AJAX技术如何应用AJAX实现实时校验的Web应用示例第三部分
1.1跟我学AJAX技术——如何应用AJAX实现实时校验的Web应用示例(第三部分)
1.1.1添加项目中的表示层相关的页面组件
1、添加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>
2、registerSuccess
1.1.2测试本示例的应用效果
1、再部署该应用
2、输入http:
//localhost:
8080/StrutsAJAXWebApp/userRegister.jsp
当我们输入用户名称为:
yang时,将出现下面的错误提示内容。
3、如果所输入的用户名称不是为“yang”,此时的submit按钮将改变为“可用”的状态。
4、最后进行提交后则出现下面的正确提交的提示。
1.1.3实际访问数据库表来获得验证的目标
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("不能正确地加载JDBC驱动程序");
}
try{
//con=DriverManager.getConnection(JDBC_ODBC_URL,"sa","1234");
con=DriverManager.getConnection(JDBC_MSSqlServer_URL,"sa","1234");
}
catch(java.sql.SQLExceptione){
System.out.println("不能正确地连接数据库并且出现SQLException");
}
catch(NullPointerExceptione){
System.out.println("不能正确地连接数据库并且出现NullPointerException");
}
}
publicConnectiongetConnection(){
if(con==null){
System.out.println("在ConnectDBBean类中的getConnection方法中con对象为空");
}
returnthis.con;
}
publicvoidcloseDBCon(){
try{
con.close();
}
catch(SQLExceptione){
System.out.println("不能正确地关闭数据库连接");
}
}
}
3、为本示例提供一个DAO接口组件
(1)添加一个接口OperateDBInterface,包名称为com.px1987.webajax.dao;
(2)编程该接口
packagecom.px1987.webajax.dao;
importjava.sql.*;
publicinterfaceOperateDBInterface{
//实际应该再提供其它的DAO方法
publicResultSetSelectDBData(Stringselect_SqlStatement);
publicvoidcloseDBCon();
}
4、再添加上面的接口OperateDBInterface的实现类
(1)类名称为OperateDBBean,包名称为com.px1987.webajax.dao
(2)编程该DAO组件
packagecom.px1987.webajax.dao;
importjava.sql.*;
publicclassOperateDBBeanimplementsOperateDBInterface{
privatejava.sql.Connectioncon=null;
ConnectDBInterfaceconnectDBBean=null;
publicOperateDBBean(){
connectDBBean=newConnectDBBean();
con=connectDBBean.getConnection();
}
publicvoidcloseDBCon()
{
connectDBBean.closeDBCon();
}
publicResultSetSelectDBData(Stringselect_SqlStatement)
{
ResultSetrs=null;
try
{
java.sql.PreparedStatementpstmt=
con.prepareStatement(select_SqlStatement,
ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_UPDATABLE);
rs=pstmt.executeQuery();
}
catch(SQLExceptione)
{
System.out.println("在查询数据库表时出现错误!
");
}
returnrs;
}
}
1.1.4构建本示例相关的数据库表
1、创建数据库表userInfo
在该表中至少包含userName和userPassWord两个字段,如下为数据库表userInfo的创建结果。
2、SQL脚本如下
CREATETABLE[dbo].[userInfo](
[userName][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[userPassWord][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[userDepartment][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[userAdminLevel][int]NULL,
[departAdminLevel][int]NULL,
[userImage][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[registerTime][nvarchar](50)COLLATEChinese_PRC_CI_ASNULL,
[id][int]NOTNULL
)ON[PRIMARY]
3、为该数据库建立一个ODBCDSN名称,名称为WebStudyDSN(也可以采用直接连接)
1.1.5修改RegisterServlet中的doGet方法功能实现代码
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.*;
importcom.px1987.webajax.dao.OperateDBBean;
importcom.px1987.webajax.dao.OperateDBInterface;
importjava.sql.*;
publicclassRegisterActionextendsAction{
publicActionForwardexecute(ActionMappingmapping,ActionFormform,
HttpServletRequestrequest,HttpServletResponseresponse){
RegisterActionFormregisterActionForm=(RegisterActionForm)form;
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();
}
StringselectSQL="select*fromUserInfowhere
userName='"+userName+"'";
OperateDBInterfaceoperateDBBeanID=newOperateDBBean();
java.sql.ResultSetrs=operateDBBeanID.SelectDBData(selectSQL);
booleanokOrNot=false;
try
{
if(rs.next())
{
okOrNot=true;
}
else
{
okOrNot=false;
}
}
catch(java.sql.SQLExceptione)
{
e.printStackTrace();
System.out.println("异常内容为:
"+e.getMessage());
}
finally
{
operateDBBeanID.closeDBCon();
}
StringerrorText=null;
if(okOrNot){
//现在已经改变为查找数据库表来判断有无该用户名存在
errorText="对不起,此用户名已经存在,请更换用户名注册!
";
}
else{
errorText="";
}
response.setContentType("text/html;charset=GBK");
PrintWriterout;
try
{
out=response.getWriter();
out.print(errorText);
out.flush();
}
catch(IOExceptione)
{
e.printStackTrace();
}
}
}
1.1.6测试本示例的最终应用效果
1、如果采用JTDS的SQLServer2000的JDBC驱动,则还要添加驱动程序
2、再执行该页面以测试是否正确地对数据库表访问
http:
//127.0.0.1:
8080/StrutsAJAXWebApp/userRegister.jsp
(1)输入用户名称为:
yang,由于在数据库表有此用户名称,将出现下面的错误提示
(2)输入用户名称为:
admin,由于在数据库表有此用户名称,将出现下面的错误提示
(3)而输入其它的用户名称时,则可以正常地往下操作