做了个最最简单的注册、登录、退出~其他一切都正常了,就是无法验证注册。无法验证填入的不能为空,密码与确认密码不能不相等~即 if (username == null || password1 == null || password2 == null
|| !password1.equals(password2) || email == null) {
response.sendRedirect("register.jsp");
}        这段代码无用掉了~原来以为是参数没传进去,但是有,因为在数据库里就能显示他们的值现在就是密码、确认密码为空也能注册,密码与确认密码不相等会出现错误,而且还能在数据库中有记录,汗啊。。部分代码如下:
register.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'register.jsp' starting page</title>
    
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">    
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->  </head>
  
  <body>
    <form name="form1" action="register_action.jsp" method="post">
    <table width="200" border="1">
      <tr>
        <td colspan="2">注册窗口</td>
      </tr>
      <tr>
        <td>用户名</td>
        <td><input type="text" name="username" size="10"></td>
      </tr>
      <tr>
        <td>密码</td>
        <td><input type="password" name="password1" size="10"></td>
      </tr>
      <tr>
        <td>确认密码</td>
        <td><input type="password" name="password2" size="10"></td>
      </tr>
      <tr>
        <td>Email</td>
        <td><input type="text" name="email" size="10"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="submit" name="submit" value="注册">
          <a href="login.jsp">返回</a></td>
      </tr>
    </table>
    </form>
  </body>
</html>register_action.jsp
<%@ page language="java" pageEncoding="ISO-8859-1"%><%@ page import="bean.UserBean" %><%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>"> <title>My JSP 'register_action.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
--> </head> <body>

<%
String username = request.getParameter("username");
String password1 = request.getParameter("password1");
String password2 = request.getParameter("password2");
String email = request.getParameter("email"); if (username.equals("") || password1.equals("")|| password2.equals("")
|| !password1.equals(password2) || email.equals("")) {
response.sendRedirect("register.jsp");
} UserBean userBean=new UserBean();
boolean isExist=userBean.isExist(username);
if(!isExist){
 userBean.add(username,password1,email);
 response.sendRedirect("login.jsp");
}else{
  response.sendRedirect("register.jsp");
} %>
</body>
</html>

解决方案 »

  1.   

    if (username.equals("") 
     || password1.equals("")
     || password2.equals("")
     || !password1.equals(password2) 
     || email.equals(""))
     {
        response.sendRedirect("register.jsp");
     }上边任何一个条件成立都会转向register.jsp
    你在web上打出他们的值看看
      

  2.   

    密码和确认密码出错了。
     !pass1.equals(pass2)
      

  3.   


    支持一楼观点,不过有个建议:把""放到前面,因为username、password等都可能会为空,因此会有空指针异常的。
    应该这样写:if("".equals(username))
      

  4.   

    它压根就不会转向register.jsp页面去,没改前没填密码、确认密码这些跟注册成功一个样,直接转想login.jsp去了,照五楼改了后出现错误了,但还是会在数据库新建了记录,就是说,那验证的语句还是被pass掉了~
    错误信息如下:
    HTTP Status 500 - --------------------------------------------------------------------------------type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception org.apache.jasper.JasperException: An exception occurred processing JSP page /register_action.jsp at line 4744:  boolean isExist=userBean.isExist(username);
    45:  if(!isExist){
    46:   userBean.add(username,password1,email);
    47:   response.sendRedirect("login.jsp");
    48:  }else{
    49:    response.sendRedirect("register.jsp");
    50:  }
    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:505)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    root cause java.lang.IllegalStateException
    org.apache.catalina.connector.ResponseFacade.sendRedirect(ResponseFacade.java:435)
    org.apache.jsp.register_005faction_jsp._jspService(register_005faction_jsp.java:104)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    note The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.
      

  5.   

    boolean isExist=userBean.isExist(username); 请问UserBean这个类的 isExist()方法返回的是boolean类型吗????
      

  6.   

    为空的判断最好在页面进行用javascript
    节省资源
      

  7.   

    response.sendRedirect();后面加个return;
    500错误可能就是因为这个!!