这是一个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>
<p class="place">
<span>位置:</span>
<ul class="placeul">
<li><a href="index.jsp">首页</a></li>
<li><a href="#">添加账户</a></li>
</ul>
</p>
<p class="formbody">
<p class="formtitle">
<span>基本信息</span>
</p>
<p 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> </label><input name="" type="submit"
class="btn" value="确认保存" /></li>
</ul>
</form>
</p>
</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方法
/**
添加用户
@param us
@return
*/
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;
}
用户名框离焦事件发ajax,把用户名单独传到后台,查数据库是否存在。返回一个boolean,存在就在用户名框后提示用户已被注册,不存在则显示用户名可以使用,或者打个勾。
完成所有信息填写后,点击表单的提交,把用户名密码等相关数据传到后台,此时再次判断一下用户名是否存在,不要相信前端。然后把用户信息存入数据库,返回前台注册成功信息
一般有两种写法,一种是表单未提交时(比如鼠标焦点移出时就进行ajax请求判断是否重名)进行校验,第二种是表单提交时在接口层进行校验. 看你采用哪种方式,后台对于第二种注册的情况一般会进行去重校验保证数据干净
在Dao里添加一个findByname方法,返回User对象,在userServlet里面调用,如果user不是null就说明他是有重名了
个人感觉,你应该在
UserAddServlet
中添加检查重名操作。不知道专家们是怎么做的,我的话一般俩方法,数据库里设置用户名
unique constraint
,另一种是增加一个,获取所有用户名,一个一个判断是不是跟当前用户名重复的,函数。我总是无脑函数……因为只接触过数据量超级小的工程……