谁能帮忙填写完整,判断用户名是否存在的功能

![图片说明](https://img-ask.csdn.net/upload/201805/10/1525942080_633430.png)图片说明琢磨一天了,想看看你们怎么配置的。

Servlet.java

 public class Servlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        request.setCharacterEncoding("UTF-8");

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

        String url = "jdbc:mysql://localhost:3306/test";
        String user = "root";
        String password = "root";

        Connection conn = null;
        PreparedStatement pst = null;
        ResultSet rs = null;

        response.setContentType("text/html");
        response.setCharacterEncoding("UTF-8");

        OutputStream os = response.getOutputStream();
        try {
            Class.forName("com.mysql.jdbc.Driver");

            conn = DriverManager.getConnection(url, user, password);
            String sql = "select username from test where username=? ";
            pst = conn.prepareStatement(sql);
            pst.setString(1, name);
            rs = pst.executeQuery();

            if(rs.next()) {
                System.out.println("用户名"+name+"已存在");
                String message = "用户名"+name+"已存在";
                os.write(message.getBytes("UTF-8"));
                os.close();
                return;
            }

            System.out.println(name+"用户名不存在");
            String message = "success";
            os.write(message.getBytes("UTF-8"));
            os.close();

        } catch (Exception e) {
            e.printStackTrace();

            String message = "系统异常";
            os.write(message.getBytes("UTF-8"));
            os.close();
        } finally {
            if(rs!=null) {
                try {
                    rs.close();
                    rs = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(pst!=null) {
                try {
                    pst.close();
                    pst = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                    conn = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

}

jsp

 <body>
    <form id="form">
        用户名:<input type="text" name="username" id="username" onblur="checkUsername(this.value)"/><br>
        密码:<input type="password" name="password" id="password" /><br>
        验证码:<input type="text" name="code" id="code" /><br>
    </form>
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
    <script type="text/javascript">
    function checkUsername(username) {
        if($.trim(username)=="") {
            alert("用户名为空");
            return;
        }
        $.ajax({
            url:"Servlet",
            type:"post",
            dataType:"text",
            data:{
                username:username
            },
            success:function(data){
                if(data!="success") {
                    alert(data);
                }
            }
        });
    }
    </script>
  </body>

web.xml

 <servlet-mapping>
    <servlet-name>Servlet</servlet-name>
    <url-pattern>/Servlet</url-pattern>
  </servlet-mapping>

图片说明这是java层

这是servlet啊

首先需要调用您的业务层啊,业务层调用dao接口,这样查找啊

能用框架还是用框架。前端可以用个验证框架,按框架要求写验证方法,比点击按钮效果好。
后端能用框架,区分controller, service, dao层也比较。实在不行,你的把数据库连接初始化一直持有,比你这样临时连接效率高。
另外判断是否直接sql按名称查询,而不是都查出来自己比较。

 sql = "select username from test where username='" + name + "'";

可以在用户输入框失去焦点时执行判断方法,进入ajax,到servlet去进行验证,可以在用户输入框后拼接是否存在,如果不是大量数据的查询还是用框架吧,方便点

当输入用户名的时候,输入完毕刚好焦点离开触发焦点时间onblur(貌似是这个方法)然后通过ajax请求controller,后面的都是三层架构了,核心问题就是采用ajax请求controller,其他的貌似都不是问题,我前两天刚做过。

jsp访问Servlet,ajax请求在xml 文件里面配置

判断用户是否存在,你可以直接修改sql,select * from test where loginName = ?.
如果返回的数据rs.hasNext()则表示账号存在。 为何不用这个?

建议在表单提交后先判断用户名是否存在,如果用户名存在再去判断密码是否正确,如果不存在就弹出用户名不存在,密码当然就不用判断了,当然,可以用前端框架,将用户名
密码,验证码全部提交到后台,然后想要什么就取什么,不要单独提交一个用户名

获取用户提交的数据,然后ajax提交,后端sql查询验证就行了

SELECT TOP 1 1 FROM 用户表 WHERE 用户名字段=传进来用户名的参数
如果返回的是 1 说明有该用户,如果返回值是空,说明没有用户