7.6 实例:验证用户名是否存在

用户在注册的时候,如果用户名已经被使用,那么马上提示用户,不用等到用户填完信息,点注册的时候,才说用户名已经存在。
首先,需要在输入用户名的input元素里,加入onblur事件,账号这部分的html代码如下:

onblur是失去焦点的时候触发,也就是输入用户名,光标移动的时候就会触发。
这里我写了一个checkUser函数:
function checkUser(){
    /*
    取出用户名
     */
    var userName=$("#studyNum").val();
    /*
    提示文字,默认没有提示
     */
    var tips="";
    /*
    如果用户名是空的,提示
     */
     if(userName==""){
        tips="不能为空";
        /*
        把错误信息提示更新到网页
         */
        $("#userTip").attr("class",
        "error");
        $("#user_tips_info .tipsTXT > span").html(tips);
    }
    else{
        /*
        发起一个ajax请求,get方式发送到AjaxServlet,发送数据是data里面的两组数据
         */
        $.ajax({
            type:"GET",
            url:"AjaxServlet",
            data:{
                types:"userVali",
                name:userName
            },
            success:function(msg){
                /*
                成功执行后调用的回调函数,如果返回的信息是0,账号已经存在,这个0是AjaxServlet返回的
                 */
                 if(parseInt(msg)!= 0){
                    /*
                    把错误信息提示更新到网页
                     */
                    tips="帐号已存在";
                    $("#userTip").attr("class",
                    "error");
                    $("#user_tips_info .tipsTXT > span")
                        .html(tips);
                }
            }
        });
    }
}

为了响应这个请求,我们需要把AjaxServlet写完:
public class AjaxServlet extends HttpServlet{
    private static final long serialVersionUID=6033791887340351355L;
    public void doPost(HttpServletRequest request,HttpServletResponse response){
    }
    public void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{
        IUserDao userDao=(IUserDao)SpringUtil.getBean("userDao",this.getServletContext());
        request.setCharacterEncoding("UTF-8");
        /*
        取得参数
         */
        String type=request.getParameter("types");
        if("userVali".equals(type)){
            String userName=(String)request.getParameter("name");
            response.setContentType("text/plain;charset=UTF-8");
            /*
             如果用户名存在,那么返回1,否则返回0
             */
             if(userDao.isUsernameExist(userName)){
                response.getWriter().print("1");
            }
            else{
                response.getWriter().print("0");
            }
        }
    }
}
而这个servlet如果是低版本,还需要到web.xml里注册。类似这样下图,然后才可以使用AjaxServlet这个名字作为服务的名字