下面的是我的login.jsp程序
当选择复选框陌生人登录的时候,点击“登录”按钮,可以进入留言界面。当有正确的用户名跟密码登录的时候就进入留言界面。但是当我都没有选择的时候直接点击“登录”按钮也可以进入留言界面,我下面的代码是没有任何选择时点击“登录”按钮是原来的界面。我感觉是在判断空值的时候出错了!请大家帮忙下,小女子不胜感激……<%@ page contentType="text/html;Charset=GB2312" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %><HTML>
    <BODY>
     <CENTER>
    <h1>登录界面</h1>  
        
   <%
        String guest[]=request.getParameterValues("guest");
        if(guest!=null)//对登录的是否是陌生人进行判断
        {
            
                 session.setAttribute("username",guest);
                 response.sendRedirect("liuyan1.jsp");   
        }
      else
      {
        Connection con;
        Statement sql;
        ResultSet rs;
        String name="";
        String pwd="";    
        
        try{
                   Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
           }
            catch(ClassNotFoundException e)
            {
                out.print("出错1"+e);
            }
            try{
                  con=DriverManager.getConnection("jdbc:odbc:messagedb","sa","sa");
                  sql=con.createStatement();
                  name=request.getParameter("username");
                  pwd=request.getParameter("password");
                  //byte a[]=name.getBytes("ISO-8859-1");
                  //name=new String(a);
                  //byte b[]=pwd.getBytes("ISO-8859-1");
                  //pwd=new String(b);
                  if(name!=null && pwd!=null)
                  {
                       String q="select * from user where username='"+name+"' and password='"+pwd+"'";
                      
                      rs=sql.executeQuery(q); 
                                
                    if(rs.next())
                      { 
                        rs.close();
                        session.setAttribute("username",name);
                        session.setAttribute("password",pwd);
                        response.sendRedirect("liuyan1.jsp"); 
                      }
                  else
                  { 
                     rs.close();
                     session.setAttribute("error","error");
                     response.sendRedirect("error.jsp");     
                   }
                      
                  } 
                  else if(name==null&&pwd==null)
                  {
                   %>
                  
                      <form method="post" name="frm1" action="login.jsp">
                      用户名:<input type=text name="username">
                      <BR>
                      <BR>
                      密码:<input type=password name="password">
                      <BR>
                      <BR>
                      <input type="checkbox" name="guest"  value="匿名登陆" > 匿名登录
                      <BR>
                      <BR>
                      <input type="submit" name="sumbit"  value="登录"  >
                      <BR>
                      <BR>
                      <input type="button" name="button"  value="注册会员" onclick="javascript:window.location.href='register.jsp'" >
                      
                      </form> 
                 <%
                  }                     
            }
            catch(SQLException e)
            {
             out.print("出错2"+e);
            }
        
}
  %>
      </CENTER>
    </BODY>
</HTML>

解决方案 »

  1.   

    String guest[]=request.getParameterValues("guest");
    不能这样写
      

  2.   

    String [] request=null;
    if(request.getParameterValues("guest")){
      request=request.getParameterValues("guest");
      session.setAttribute("username",guest);
      response.sendRedirect("liuyan1.jsp"); 
    }
    这样写就对了!
      

  3.   


      String guest=request.getParameter("guest");
      if(null!=guest&&!"".equals(guest))//对登录的是否是陌生人进行判断
      {   
      session.setAttribute("username",guest);
      response.sendRedirect("liuyan1.jsp");   
      }
      

  4.   

    浮云,浮云,如果你是初学者,建议你还是用mvc来做判断,是在不成,用ajax也可以不,不要把代码嵌入页面当中去,这种做法很卑鄙的,一般只有在工作中,为了快速开发才这么写,不管这么说,你的values写错,