Ajax异步查询用户名时报错空指针问题? ps:第一次问问题,不大清楚格式,请勿纠~~~

java.lang.NullPointerException
at cn.kpp.shop.user.action.UserAction.findByName(UserAction.java:51)

UserAction:

public class UserAction extends ActionSupport implements ModelDriven {

private static final long serialVersionUID = 1L;
// 模型驱动使用的对象
private User user = new User();

public User getModel() {
    return user;
}

//注入service
private UserService userService;

public void setUserService(UserService userService) {
    this.userService = userService;
}

/*
 * 1.跳转到注册页面的方法
 */
public String registPage(){
    return "registPage";
}

/*
 * 2.Ajax进行异步校验用户名的方法
 */
public String findByName() throws IOException{
    ****User existUser = userService.findByUsername(user.getUsername());** 这行报错?**
    // 获得response对象,项页面输出:
            HttpServletResponse response = ServletActionContext.getResponse();
            response.setContentType("text/html;charset=UTF-8");
            // 判断
            if (existUser != null) {
                // 查询到该用户:用户名已经存在
                response.getWriter().println("<font color='red'>用户名已经存在</font>");
            } else {
                // 没查询到该用户:用户名可以使用
                response.getWriter().println("<font color='green'>用户名可以使用</font>");
            }
            return NONE;    
}

}

注册页面:regist.jsp

/*

  • 前台JS校验:非空
    */

    function checkForm() {
    //校验用户名,获得文本框的id值
    var username = document.getElementById("username").value;
    if(username == null || username ==""){
    alert("用户名不能为空!");
    return false;
    }
    //校验密码,获得文本框的id值
    var password = document.getElementById("password").value;
    if(password == null || password ==""){
    alert("密码不能为空!");
    return false;
    }
    //校验确认密码,获得文本框的id值
    var repassword = document.getElementById("repassword").value;
    if(repassword != password){
    alert("两次密码输入不一致!");
    return false;
    }
    }

    /*

    • Ajax异步校验:用户名是否存在
      */

      function checkUsername() {
      var username = document.getElementById("username").value;
      //1.创建异步交互对象
      var xhr = createXmlHttp();
      //2.设置监听
      xhr.onreadystatechange = function(){
      if(readystate == 4){
      if(xhr.status == 200){
      document.getElementById("span1").innerHTML = xhr.responseText;
      }
      }
      }
      //3.打开连接
      xhr.open("GET","${pageContext.request.contextPath}/user_findByName.action?time="+new Date().getTime()+"&username="+username,true);
      //4.发送
      xhr.send(null);
      }

      function createXmlHttp(){
      var xmlHttp;
      try{ // Firefox, Opera 8.0+, Safari
      xmlHttp=new XMLHttpRequest();
      }
      catch (e){
      try{// Internet Explorer
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e){
      try{
      xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
      catch (e){}
      }
      }
      return xmlHttp;
      }

                    <form id="registerForm"  method="post" novalidate="novalidate" onsubmit="return checkForm()">
                        <table>
                            <tbody><tr>
                                <th>
                                    <span class="requiredField">*</span>用户名:
                                </th>
                                <td>
                                    <input type="text" id="username" name="username" class="text" maxlength="20" onblur="checkUsername();">
                                    <span id="span1"></span>
                                </td>
                            </tr>……

http://www.poluoluo.com/jzxy/201402/262209.html