【问题标题】:check user name avialability using jsp and mysql [closed]使用jsp和mysql检查用户名可用性[关闭]
【发布时间】:2014-04-01 00:58:47
【问题描述】:

对于我的 Web 应用程序,我有一个用户名文本字段,我需要从 mysql 数据库中检查用户名的可用性,并且应该在文本字段下方显示状态为可用或不可用..

我已经像这样更改了我的代码它的部分工作所以请仔细阅读这段代码并帮助我......

这是我的 JSP:

<tr>
<td>Choose your UserName* :</td>
<td><script type="text/javascript" src="jquery.js"></script>
<input type="text" name="txtUsername" id="username">@gmail.com
<div id="status"></div>
<script type="text/javascript" src="js/check_user.js"></script>
<span id="errorMissingUserName" style="display:none;"><font color="red">*Please provide your username.</font></span>
<span id="errorUserNameInvalid" style="display:none;"><font color="red">*Please provide a valid username.Username can contain only alphabets numbers and periods</font></span>
<span class="status"></span>
</tr>

这是我的 servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            PrintWriter out=response.getWriter();
            String uname=request.getParameter("txtUsername");
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/dbname/uname/pass");
                PreparedStatement ps=conn.prepareStatement("select * from register where UserName=?");
ps.setString(1,uname);
                ResultSet rs=ps.executeQuery();
                if(rs.next()){
                    out.println("<font color=red>");
                    out.println("UserName not available");
                    out.println("</font>");
                    }
                else{
                    out.println("<font color=green>");
                    out.println("UserName available");
                    out.println("</font>");
                }
                rs.close();
                ps.close();
                conn.close();
            } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        }

    }

只有 else 子句有效,if 子句无效

这是我的 check_user.js

$('#username').keyup(function()

{
var username=$('#username').val();
$('#status').html('<img src="images/username_loader.gif" >');
if (username!=''){
    $.post('CheckUsername',{username:username},
            function(data)
            {
        $('#status').html(data);
            });

}
else{
    $('#status').html('');
    }
});

我意识到String uname = request.getParameter("txtUsername"); 给用户名一个空值给servlet...如何检查每个字母何时输入到jsp 并将其与已经存在的数据库名称进行比较?有人请帮我解决这个问题....

【问题讨论】:

  • 定义不工作并描述您遇到的问题。你的代码问题太多了。
  • @Bart 是 javascript 的新手,我确信我的 servlet....所以任何问题都应该只存在于 javascript 和 标记中...任何帮助将不胜感激.. .
  • 你还没有定义不工作
  • 您在浏览器中访问该网址时是否看到任何输出?如果代码抛出异常,则不会打印任何内容。
  • @Bart no 我没有看到任何输出

标签: java jquery mysql jakarta-ee java-ee-7


【解决方案1】:

在 getParameter 中传递“id”而不是“name”

 String uname=request.getParameter("username");

这样做会奏效。

【讨论】:

  • 通过在 servlet 中传递 id 得到它??
【解决方案2】:

显然,您在“用户名”键下提交用户名,并尝试使用“txtUsername”键检索它。这当然行不通。

(根据要求从评论移至答案)

【讨论】:

  • 是的,是的,Stackoverflow 按设计工作;)谢谢。
【解决方案3】:

你的 if 和 else 是相反的。你是说:如果我在注册表中找到用户名,那么它是可用的,如果我在注册表中找不到用户名,那么它不可用。你不是说反了吧。如果它还没有在寄存器中,那么它应该是可用的。

【讨论】:

  • 不,如果我反过来改变,也只有一个条件起作用,代码中的问题是 uname=request.getParameter (txtUsername);得到一个空值dono y
  • 很明显,您在“用户名”键下提交用户名,并尝试使用“txtUsername”键检索它。这当然行不通。
  • @Gimby 非常感谢它的工作,我不知道我是如何忽略它的......非常感谢你能把这个作为答案发布吗???这样我就可以奖励你的赏金??
  • 如你所愿,完成了。
猜你喜欢
  • 2014-03-28
  • 2014-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
相关资源
最近更新 更多