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