<script>
// 1.页面加载
$(function () {
// 2.为用户名输入框绑定一个离焦事件
$("#username").blur(function () {
// 3.获得用户输入的数据
//var username = this.value;
var username = $(this).val();
// 10.每次发送请求之前,先清空提示信息内容
$("#usernameinfo").empty();
// 4.发送异步请求(请求参数的key,以后就是Servlet中getParameter方法的参数)
$.get({
url:"${pageContext.request.contextPath}/RegisterServlet",
data:{"username":username},
success:function(data){
// 5.判断
if("yes"==data){
// 6.说明用户名可用!将提示信息存储到一个临时变量
var temp = '<span class="label label-success">用户名可用</span>';
// 7.将提示信息显示在指定位置
$("#usernameinfo").append(temp);
// 12.解除注册按钮的禁用状态
$("#registerSubmit").prop("disabled",false);
}else if("no"==data){
// 8.说明用户名不可用!
var temp = '<span class="label label-danger">用户名不可用</span>';
// 9.将提示信息显示在指定位置
$("#usernameinfo").append(temp);
// 11.禁用注册按钮
$("#registerSubmit").prop("disabled",true);
}
},
error:function(XMLHttpRequest, textStatus, errorThrown){
// 只要代码能执行到这,说明服务器端出问题了给出提示信息!
var temp = '<span class="label label-danger">服务器端内部出错,请稍后再进行该功能的尝试!</span>';
// 将提示信息显示在指定位置
$("#usernameinfo").append(temp);
// 禁用注册按钮
$("#registerSubmit").prop("disabled",true);
},
dataType:"text"
});
});
});
</script>
@WebServlet(name = "RegisterServlet", urlPatterns = "/RegisterServlet")
public class RegisterServlet extends HttpServlet {
/**
* 用户名校验(异步方式)
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,
IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
// 获得请求参数username
String username = request.getParameter("username");
System.out.println(username);
// 调用service层用户名校验的方法(条件查询)
UserService service = new UserService();
User checkUser = service.checkUserName(username);
// 服务器内部异常了(模拟断电!)
int i = 1/0;
// 非空判断
if(checkUser!=null){
// 说明数据库已经存在这个用户(名),给出用户名不可用的提示
response.getWriter().write("no");
}else{
// 说明数据库已经存在这个用户(名),给出用户名不可用的提示
response.getWriter().write("yes");
}
}
public class UserService {
public User checkUserName(String username) {
UserDao dao = new UserDao();
return dao.checkUserName(username);
}
}
public class UserDao {
public User checkUserName(String username) {
try {
//1.获得JBDCTemplate
JdbcTemplate template = new JdbcTemplate(DRUIDUtils.getDataSource());
//2.编写SQL语句
String sql = "select * from user where username=?";
//3.设置实际参数
Object[] params = {username};
//4.执行查询操作(查询的一条记录封装成一个对象!)
User checkUser = template.queryForObject(sql, new BeanPropertyRowMapper<>(User.class), params);
//发现当查询的result为空时,size赋值为0,并抛出EmptyResultDataAccessException异常
return checkUser;
}catch (Exception e){
return null;
}
}