<%!String name, email, topic, body, sql;%>
<%
  
  name = request.getParameter("name");
  email = request.getParameter("email");
  topic = request.getParameter("topic");
  body = request.getParameter("body");
 if((name!=null)&&(!name.equals(" "))&&(email!= null)&&(!email.equals(" "))&&(topic!=null)&&(!topic.equals(" "))&&(body!=null)&&(!body.equals(" ")))
  {sql = "insert into guestbook (Name,Email,Topic,Body)values('"+name + "','" + email + 
"','" + topic + "','" + body + "')";
  sqlbean.executeInsert(sql);
 out.println("恭喜你,留言成功!");
 }
  else
{ out.print("<b><font color=red>请重新填写:姓名,emal,主题,留言!</font></b><font size=20pt><a href=/guestbook.jsp>返回</a></font>");}
%>
获得留言的参数.为什么还能插入空值了.这的if ,else好像不起作用呀,各位大哥给看看呀!

解决方案 »

  1.   

    没用过你这个sqlbean.executeInsert(sql);
    下面这个是我做留言本的时候的添加留言的方法:
    public boolean save(Object obj) {
        Book book = (Book) obj;
        String sql =
            "insert into book(webname,email,titletxt,contxt) values(?,?,?,?)";
        try {
          PreparedStatement ps = conn.prepareStatement(sql);
          ps.setString(1, book.getWebname());
          ps.setString(2, book.getEmail());
          ps.setString(3, book.getTitletxt());
          ps.setString(4, book.getContxt());
          int bl = ps.executeUpdate();
          if (bl == 1) {
            return true;
          }
          else {
            return false;
          }
        }
      

  2.   

    用正则表达式"(\t|\n| |\r|\f)"把你接收的参数过滤一下就好了,一般过滤后不用" ".equals();
    直接比较零长度字符串""就可以了,空的那个还是必要的,根据页面的不同记得转码,否则显示乱码的
      

  3.   

    检验值的合法性可以在struts的validate方法中去实现
      

  4.   

    if((name!=null)&&(!name.equals(" "))&&(email!= null)&&(!email.equals(" "))&&(topic!=null)&&(!topic.equals(" "))&&(body!=null)&&(!body.equals(" ")))
    你决不决的你全部用&&连接判断条件 ,会多了点???
      

  5.   

    改成这样试试:
    if((name!=null)&&(name.length() > 0)&&(email!= null)&&(email.length() > 0)&&(topic!=null)&&(topic.length() > 0)&&(body!=null)&&(body..length() > 0))可能出错的原因:!name.equals(" ")里面的""不应该有空格吧.
      

  6.   

    equals 里面不要有空格其实你可以写一个判断是否是空的方法,以后随时可以调用public static boolean isNull(String str){    return str == null or str.equals("");
    }
      

  7.   

    if((name!=null)&&(!name.equals(" "))&&(email!= null)&&(!email.equals(" "))&&(topic!=null)&&(!topic.equals(" "))&&(body!=null)&&(!body.equals(" ")))
    你的判断有问题,name!=null,name有值,而name.equals(" ")如果是空返回真,如果按你的方法不传值,name.equals(" ")是真,但你加了!这个符号是假了,那就不会执行if下的else,如果else都不执行,就是你的程序有问题了,就不是跳到这个页面了.
      

  8.   

    Top  
     fffddd(杀我者死)  我同意你的观点
      

  9.   

    应该是你空格造成的! "_" ( _为空格)
    你的判断条件太复杂了(让你写得)像是判断输入数据是否有效这种事情,用JavaScript去做好了!
      

  10.   

    rainbow_ayst() ( ) 信誉:100  2006-6-4 23:06:27  得分: 0  
     
     
       
    不过看代码倒很像是女生写的 ;-)  
     
    这你都看得出来,实在是高