一个注册用的jsp页面,就是一个页面嵌套一个表格,然后那个表格点提交就会调用servlet把数据写到数据库里去 但是非常奇怪,注册成功了 但是无论怎样,全部的输入数据都会进去,但就是密码是没有的,总是空,这是我的代码: package myshop.servlet;import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import myshop.model.*;
import myshop.Dao.*;public class DoRegister
    extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=GBK";  //Initialize global variables
  public void init() throws ServletException {
  }  //Process the HTTP Get request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    String userName = request.getParameter("userName");
    if (userName == null) {
      userName = "";
    }
    String password =DBUtil.chaStr(request.getParameter("password"));
    if (password == null) {
      password = "";
    }
  
//......    String email = DBUtil.chaStr(request.getParameter("email"));
    if (email == null) {
      email = "";
    }
    String input = DBUtil.chaStr(request.getParameter("rand"));
    if (input == null) {
      input = "";
    }
    HttpSession session = request.getSession();
    String rand = (String) session.getAttribute("rand");
    response.setContentType(CONTENT_TYPE);
    PrintWriter out = response.getWriter();
    if (!input.equals(rand)) {
      out.println("<script type=\"text/javascript\">");
      out.println("alert(\"验证码错误!\")");
      out.println("window.open(\"Register.jsp\",\"_self\")");
      out.println("</script>");
      return;
    }
    User user = new User();
    user.setUserName(userName);
    user.setPassword(password);
    user.setRealName(realName);
    user.setAddress(address);
    user.setPhone(phone);
    user.setMobile(mobile);
    user.setEmail(email);
    UserDAO dao = new UserDAO();
    if (dao.usable(user)) {
      if (dao.register(user)) {
        out.println("<script type=\"text/javascript\">");
        out.println("alert(\"注册成功\")");
        out.println("window.open(\"Login.jsp\",\"_self\")");
        out.println("</script>");
      }
      else {
        out.println("<script type=\"text/javascript\">");
        out.println("alert(\"注册失败\")");
        out.println("window.open(\"Register.jsp\",\"_self\")");
        out.println("</script>");
      }
    }else{
      out.println("<script type=\"text/javascript\">");
      out.println("alert(\"该用户名已存在,请重新注册!\")");
      out.println("window.open(\"Register.jsp\",\"_self\")");
      out.println("</script>");    }
    out.close();
  }  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    doGet(request, response);
  }  //Clean up resources
  public void destroy() {
  }
}

解决方案 »

  1.   

    1. 检查一下页面上那个password的input名字是不是password
    2. Debug一下这几句代码看看password是不是为空
        String password =DBUtil.chaStr(request.getParameter("password"));
        if (password == null) {
          password = "";
        } 如果不知道怎么debug的就System.out.print一下 一般是因为第一个原因造成的
      

  2.   

    在sql写入数据库前打印一下你的password是否有值,或是“ ”这种看不到的空格。
      

  3.   

    估计是request.getParameter("password"); 结果为空导致的