<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>js+ajax</title>
<script type="text/javascript" src="static/bootstrap/js/jquery-2.0.3.js"></script>
<script type="text/javascript">
function validate(){
var name= $("#name").val();
if(name==null||name==""){
//为空隐藏提交按钮
var ui =document.getElementById("tijiao");
ui.style.display="none";
//这里是简单的显示 不设计后台,前台做的判断
$("#namediv").html("用户名不可以为空");
}else{
//ajax实现
//11111111获取XMLhtmlRequestxml对象
var req=createXmlHttpRequest();
//222222222准备url 数据 回调函数
//这个name是function下面var的参数.
var url="/maven/reg1.do?name="+name;
//还有一个参数表示的是异步还是同步,一般不写直接就是true,异步的
req.open("GET",url,true);
//3333333333这个就是回调函数
req.onreadystatechange=callback;
//这个send是在从servlet判断你的账号是不是存在, 如果是true就说名字存在,给页面返回了以后才有的.为啥写空不知道
//4发送请求
req.send(null);
//回调函数
function callback(){
//第一个是我们的服务器成功接受了响应,并且解释了出来,状态4 第二个是服务器内部没有发生错误, url什么的也没有错,
if(req.readyState=4&&req.status==200){
var date=req.responseText;
if(date=="false"){
//下面的是意思是,如果账号存在了,提交按钮自动消失
//超级叼
var ui =document.getElementById("tijiao");
ui.style.display="none";
$("#namediv").html("用户名已经存在");
}else{
//不为空了,按钮一直显示
var ui =document.getElementById("tijiao");
ui.style.display="";
$("#namediv").html("用户名可以使用");
}
}
}
}
}
function createXmlHttpRequest(){
//如果是ie6以上版本的浏览器
if(window.XMLHttpRequest){
return new XMLHttpRequest();
}else{
//如果浏览器是ie以下的
return new ActiveXObject("Microsoft.XMLHTTP");
}
}
</script>
</head>
<body>
<form action="/maven/reg1.do" id="form1">
<table id="aa">
<tr>
<td>用户名</td>
<td><input type="text" name="username" id="name"
onblur="validate();" /> <font color="red">*</font></td>
<td>
<div id="namediv" style="display: inline"></div>
</td>
<td>密码</td>
<td><input type="password" name="password"></td>
<td>电话</td>
<td><input type="text" name="phone"></td>
<td><input type="submit" value="点击注册" id="tijiao"></td>
</tr>
</table>
</form>
</body>
</html>
package com.gray.user.controller;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import com.gray.user.entity.RegUser;
import com.gray.user.service.impl.RegServiceImpl;
import com.gray.user.service.impl.UserServiceImpl;
@Controller
public class RegController {
@Autowired
private RegServiceImpl userService;
//自动装载他到spring
@RequestMapping("/reg1.do") //url
public String dologin(Model model,HttpServletResponse res,@RequestParam String username,RegUser rg,HttpServletResponse response) throws IOException{
boolean used=false;
System.out.println("测试参数获取到bean没有"+rg.getUsername()+rg.getPassword()+rg.getPhone());
rg.setUsername(username);
if(userService.doUserLogin(rg)){
used=true;
System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是ture,就是说账号不重复");
}else{
used=false;
System.out.println("通过control到--->service---到dao---到usermapp.在返回回来,service里面是false,重复了账号 ");
}
return "regsuccess";
}
}
package com.gray.user.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gray.user.dao.UserDao;
import com.gray.user.entity.RegUser;
import com.gray.user.entity.User;
import com.gray.user.service.RegService;
import com.gray.user.service.UserService;
@Service
public class RegServiceImpl implements RegService {
@Autowired
private UserDao<RegUser> dao;
@Override
public boolean doUserLogin(RegUser ruser) {
//第一次执行查询数据库,查询 userdao selectUserName方法。 他这个方法和user.xml里面的id为selectUserName串联了.
//也就是直接调用查询语句,并且吧值返回给reguser 类
System.out.println("testRegServiceImpl------->查询数据库,查询语句为id是selectusername");
List<RegUser> list = dao.selectUserName(ruser.getUsername());
System.out.println("查到了集合大小是"+list.size()+"查到了和你账号相同是的是几个");
if(list.size() == 0){
System.out.println("RegServiceImpl---你没有查询到你账号和数据库相同的信息.所以你return,");
for(int i=0;i<list.size();i++){
System.out.println(list.get(i).getUsername());
}
return true;
}else{
if(list.size()!=0){
System.out.println("regServiceImpl---查询到和你相同的账号不是0个,返回false");
return false;
}else{
System.out.println("regserviceImpl----其他情况我也不知道啥情况,也返回false");
return false;
}
}
}
}
页面上的ajax 他就一直出毛病,数据库有个账号名是aa 只有我在表单填写aa 他才在网页提示账号重复, 别的任何都不提示,只会提示不能为空, 而且还失灵时不灵。
但是用system. 输出 我写的任何判断都是对了, 这是为啥? 请求大神给我说下,最好说下哪里错了。谢谢了