为什么jsp页面在使用if语句时等待用户输入

时间:2014-04-06 02:13:34

标签: jsp user-input

当我使用代码从用户获取用户名时

当我使用if(str!= null)然后它等待用户输入,当我删除if语句时,它打印UserName无效或不存在!马上就会发生这种情况

    <%

        String str1=request.getParameter("username");
        String str2=request.getParameter("type");
        if(str1!=null)
        {
                int flag=0;

        try{
            Class.forName("oracle.jdbc.driver.OracleDriver");
    Connection c=                                                                                                    DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","system","pass"); 
                            Statement s= c.createStatement();
                    if(str2 == "student")
              {
          String sql="select pass from student where username='"+str1+"'";
                ResultSet rs= s.executeQuery(sql);
                if(rs.next())
                    flag=1;
                else
                    flag=0;

                if(flag==1)
                {
                out.println("YOUR PASSWORD IS "+rs.getString(2)+"!!!");
                }
                else
                out.println("UserName Not Valid Or Does Not Exist!!!");
                rs.close();
            }
            else
            {
            String sql1="select pass from faculty where username='"+str1+"'";
                ResultSet rs1= s.executeQuery(sql1);
                if(rs1.next())
                    flag=1;
                else
                    flag=0;

                if(flag==1)
                {
                out.println("YOUR PASSWORD IS "+rs1.getString(2)+"!!!");
                }
                else
                out.println("UserName Not Valid Or Does Not Exist!!!");
                rs1.close();
            }
            s.close();
            c.close();
            }catch(Exception e) {  out.println(e);}
        }
    %>

1 个答案:

答案 0 :(得分:0)

在没有看到页面的其余部分的情况下,我猜这是在页面顶部执行处理以及接受表单输入的代码。因此,如果您在没有if()语句的情况下加载页面,那么它会立即尝试使用不返回任何内容的查询来查询数据库。当它进入if(rs.next())时,它将返回false。因此该标志设置为0,然后立即打印您的消息。再一次,这只是一个猜测而没有看到页面的其余部分。