基于Ajax的用户名可用性检查,然后生成一些用于jsp的用户名

时间:2013-01-04 13:42:34

标签: ajax jsp

我有点做了一个基于ajax的jsp编码来检查用户名可用性。它工作得很好。虽然它可能有一些错误。所以如果有任何请指出来。现在我的主要问题是,在检查之后我还想为用户生成一些用户名,就像我们可以在gmail注册表单中看到它一样。我在这里给我的代码......

首先是index.html ......

    <html>
<body>
<form action=sample.jsp method=post>
id<input type=text name=id><br>
<input type=submit value=next>
</form>
</body>
</html>

现在sample.jsp ...

<jsp:useBean id="ob" class="sample.Database" scope="session" />
<jsp:setProperty name="ob" property="*" />
<html>
<head>
var xmlHttp  
    var xmlHttp
    var checkvalue

    function showState(p1){ 
        if (typeof XMLHttpRequest != "undefined"){
            xmlHttp= new XMLHttpRequest();
            }
            else if (window.ActiveXObject){
            xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
            }
        if (xmlHttp==null){
                alert ("Browser does not support XMLHTTP Request")
            return
        } 
        var url="getlist.jsp?name="+p1;
        xmlHttp.onreadystatechange = stateChange;
        xmlHttp.open("GET", url, true);
        xmlHttp.send(null);
    }

    function stateChange(){   
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete"){   
            checkvalue=document.getElementById("name").innerHTML=xmlHttp.responseText;
            document.f1.checking.value = xmlHttp.responseText; 
        }   
    }

    function conditions(){
        if(!checkvalue.match("Available"))
        {
            alert("no match");
            return false
        }
    }

</script>  
</head>  
<body >  
<center>
<br>  
<form action="sample1.jsp" name="f1" method="post" onsubmit="return conditions()">
name <input type=text name=name onchange="showState(this.value);"><div id='name'></div><br>
checking<input type=text name=checking><br>
    <input type=submit value=next>



</form>
</body> 
</html>

现在getlist.jsp ...

    <jsp:useBean id="ob" class="sample.Database" scope="session" />
<%
    String n=request.getParameter("name");
    if(ob.checkName(n)==0)
    {
%>
        <font color=green>Available</font>
<%
    }
    else
    {
%>
        <font color=red>Not available</font>
<%
    }
%>

now sample1.jsp ....

<jsp:useBean id="ob" class="sample.Database" scope="session" />
<jsp:setProperty name="ob" property="*" />
<%
    if(ob.insertData()==1)
        out.println("Success");
    else

        out.println("Unsuccess");
%>

包中的类文件代码 - &gt;示例文件名 - &gt; Database.java ...

package sample;

import java.util.*;
import java.sql.*;

public class Database
{
    private String id="",name="";
    private int t=0;
    private Connection con;

    public void setName(String name)
    {
        this.name=name;
    }

    public String getName()
    {
        return name;
    }

    public void setId(String id)
    {
        this.id=id;
    }

    public String getId()
    {
        return id;
    }

    public Connection c1()
    {
        try{
            Class.forName("oracle.jdbc.OracleDriver");
            con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1000:xe","system","12345");
        }
        catch(Exception e){}
        return con;
    }

    public int checkName(String n)
    {
        try{
            con=c1();
            PreparedStatement pst = con.prepareStatement("select name from testani where name='"+n+"'");
            t = pst.executeUpdate();
            con.close();
        }
        catch(Exception e){}
        return t;
    }

    public int insertData()
    {
        try{
            con=c1();
            PreparedStatement pst = con.prepareStatement("insert into testani values('"+name+"','"+id+"')");
            t = pst.executeUpdate();
            con.close();
        }
        catch(Exception e){}
        return t;
    }
}

我使用mysql ...

创建了一个名为testani的数据库,其中包含属性名称和id

现在我如何修改此代码以生成一些名称....提前感谢..

1 个答案:

答案 0 :(得分:0)

我猜你需要为名字建议制作自己的算法。

就像用户输入他的姓名,出生年份等一样。那么你可以设计一个算法,它可以通过组合(连接)单词或出生年份或你想要生成建议用户名的任何内容来获取这些值并进行一些处理。

然后您只需将该列表返回给用户即可。