首页 > 怎么用Ajax给我程序添加上验证重名不能注册?

怎么用Ajax给我程序添加上验证重名不能注册?

这是一个WEB项目,需要在网页上显示,只是初学,没有涉及到后面一些东西。我把添加用户的代码放在了下面,用Myeclipse写的,我想加上Ajax让他注册不能重名,该在哪里做出修改呢?先谢谢大家了

这个是userAdd.jsp 增加用户的页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>     
  </head>  
  <body>  
  <div class="place">
        <span>位置:</span>
        <ul class="placeul">
            <li><a href="index.jsp">首页</a></li>
            <li><a href="#">添加账户</a></li>
        </ul>
    </div>
    <div class="formbody">
        <div class="formtitle">
            <span>基本信息</span>
        </div> 
  <div class="formbody">
   <form action="<%=path%>/servlet/UserAddServlet" method="post" >
<ul class="forminfo">
      <li><label> 用户名:</label><input name="uname" type="text" class="dfinput" ></li>
      <li><label> 密码:</label><input name="upass" type="password" class="dfinput" ></li>       
        <li><label > 权限:</label></li>       
        <li><label style="margin-left: 150px">财务</label><input  type="radio" name="quanxian"  value="财务"  checked="checked" style="margin-top: 12px" /></li>
          <li><label style="margin-left: 150px">人事</label><input type="radio" name="quanxian" value="人事" style="margin-top: 10px" /></li>
        <li><label>&nbsp;</label><input name="" type="submit"
                    class="btn" value="确认保存" /></li>
</ul>
    </form>
  </div> 
  </body>
</html>

下面这个是UserAddServlet 后台操作数据

package com.xx.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xx.bean.User;

import com.xx.dao.UserDao;

public class UserAddServlet extends HttpServlet {

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

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

        request.setCharacterEncoding("utf-8");
        String uname = request.getParameter("uname");
        String upass = request.getParameter("upass");
        String quanxian=request.getParameter("quanxian");
        User u = new User(0, uname, upass, quanxian);
        UserDao ud = new UserDao();
        boolean b = ud.add(u);
    if (b) {
        response.sendRedirect("UserShowServlet");
    }else {
        response.sendRedirect(request.getContextPath()+"/userAdd.jsp");
    }
    
}
    }

嗯,下面是添加用户的Dao方法

/**

public boolean add(User u) {

boolean b = false;
Connection conn = BaseConn.getconn();
PreparedStatement ps = null;

String sql = "INSERT INTO user VALUES(0,?,?,?)";
try {
    ps = conn.prepareStatement(sql);
    ps.setString(1, u.getUname());
    ps.setString(2, u.getUpass());
    ps.setString(3, u.getQuanxian());
    int a = ps.executeUpdate();
    if (a == 1) {
        b = true;
    }

} catch (Exception e) {
    e.printStackTrace();
} finally {
    BaseConn.closeAll(conn, ps, null);
}
return b;

}


个人感觉,你应该在UserAddServlet中添加检查重名操作。
不知道专家们是怎么做的,我的话一般俩方法,数据库里设置用户名unique constraint,另一种是增加一个,获取所有用户名,一个一个判断是不是跟当前用户名重复的,函数。
我总是无脑函数……因为只接触过数据量超级小的工程……


一般有两种写法,一种是表单未提交时(比如鼠标焦点移出时就进行ajax请求判断是否重名)进行校验,第二种是表单提交时在接口层进行校验. 看你采用哪种方式,后台对于第二种注册的情况一般会进行去重校验保证数据干净


在Dao里添加一个findByname方法,返回User对象,在userServlet里面调用,如果user不是null就说明他是有重名了


  1. 用户名框离焦事件发ajax,把用户名单独传到后台,查数据库是否存在。返回一个boolean,存在就在用户名框后提示用户已被注册,不存在则显示用户名可以使用,或者打个勾。

  2. 完成所有信息填写后,点击表单的提交,把用户名密码等相关数据传到后台,此时再次判断一下用户名是否存在,不要相信前端。然后把用户信息存入数据库,返回前台注册成功信息

【热门文章】
【热门文章】