public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=gb2312");
String ErrMsg = "";// 用户使用
String Err = "";// 程序使用
// 必填项
String uname = request.getParameter("uname");
String upwd = request.getParameter("upwd");
String upwd2 = request.getParameter("upwd2"); if (!upwd.equals(upwd2)) {
ErrMsg = "密码不一致";
request.setAttribute("ErrMsg", ErrMsg);
try {
request.getRequestDispatcher(".reg_failure.jsp").forward(
request, response); } catch (Exception e) {
e.getMessage();
}
}
// 选填项
String uemail = request.getParameter("uemail");
String usex = request.getParameter("usex");
String uquestion = request.getParameter("uquestion");
String uanswer = request.getParameter("uanswer"); User user = new User();
DBbean dbbean = new DBbean();
String strSql = "select * from userinfo where uname='" + uname + "'";
ResultSet rs = null;
try {
rs=dbbean.querySql(strSql);
if (rs.next()) {
ErrMsg = "用户名已经使用";
request.setAttribute("ErrMsg", ErrMsg);
request.getRequestDispatcher("./reg_failure.jsp").forward(
request, response);
} else {
user.setUname(uname);
user.setUpwd(upwd);
user.setUemail(uemail);
user.setUsex(usex);
user.setUquestion(uquestion);
user.setUanswer(uanswer);
}
} catch (Exception e) {
Err += dbbean.getErr() + e.getMessage();
out.print(dbbean.getErr() + Err);
}
strSql = "insert into userinfo(" + "uname,upwd,uemail,usex,"
+ "uquestion,uanswer) values('" + user.getUname() + "','"
+ user.getUpwd() + "','" + user.getUemail() + "','"
+ user.getUsex() + "','" + user.getUquestion() + "','"
+ user.getUanswer() + "')";
try {
dbbean.exeSql(strSql);
} catch (Exception e) {
Err += e.getMessage();
out.println(dbbean.getErr() + Err);
}
if (dbbean.getI() == 1) {
request.setAttribute("user", user);
try {
request.getSession(true).setAttribute("uname", uname);
request.getRequestDispatcher("./reg_success.jsp").forward(
request, response);
} catch (Exception e) {
out.println(e.getMessage() + "5");
e.printStackTrace();
}
} }
上面的User类是我定义的一个用户封装bean,封装了用户名密码等
DBbean类封装了对数据库的操作,其中的函数提交sql语句就可以返回结果
但是就是老是空指针异常
java.lang.NullPointerException
com.allan.Servlet.RegProcessServlet2.doPost(RegProcessServlet2.java:76)
javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

解决方案 »

  1.   

    我估计是你少给了某个请求参数,所以才出现空指针异常。解决方案如下:在Servlet中加个方法public String getParameter( HttpServletReqeust request, String name )
    {
      String value = request.getParameter( name );
      if( value == null )
        return "";
      else
        return value;
    }然后在你要接收请求参数时这样调用:
    String uname = getParameter( request, "uname" ); 估计可以解决你的空指针问题。
      

  2.   

    注意:
    1、在你接收请求参数的地方,都用上自己写的getParameter( HttpServletReqeust request, String name )方法。2、虽然你的空指针异常可能是解决了,但是,之所以出现这个异常,是因为你有某些参数没能提交。请仔细检查表单,确保每个表单元素(<input>、<select>等)的name属性是你所期望的。