如果条件不正常

时间:2012-10-01 07:09:20

标签: java jsp servlets

实际上我在这段代码中遇到了逻辑问题

问题:当我输入正确的emp_id和密码时,if部分正常运行,但在我尝试运行此页面的情况下,这个if条件(运行as->在Server-Tomcat服务器上运行)....它会转到else条件 - 这使我无法在if子句中运行jsp页面。

              else {
              resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);

                          }

我想在满足if子句时运行jsp页面。

这是我的代码:

     try {
          String url="jdbc:mysql://localhost/app";
          Class.forName("com.mysql.jdbc.Driver");
          Connection con=DriverManager.getConnection(url,"****","******");
          stmt = con.prepareStatement("select * from ofc where emp_id=? and password=?");
          stmt.setString(1, employee);
          stmt.setString(2, password);

          ResultSet rs = stmt.executeQuery();

          if(rs.next()) {  //I want to print this jsp page for this If condition
              System.out.println("2> Employee Id : "+employee+" && Password : "+password);
              System.out.println("3> This employee "+employee+" exsists in the database and will be there");      

              resp.setContentType("text/html");
              PrintWriter out = resp.getWriter();
              out.print("<html><body>");       // It's my JSP page,& start from here
              out.print("<head>");
              out.print("<title>Policy Page</title>");
              out.print("</head>");
              List<String> devices = Store.getDevices();
              if (devices.isEmpty())
              {
                out.print("<h2>No  One is there!</h2>");
              } 
              else
              {    
               out.print("<h2>" + devices.size() + " device(s) are there!</h2>");
               out.print("<form name='form' method='POST' action='sendAll'>");
               out.print("<input type='text' name='policy'>");
               resp.setStatus(HttpServletResponse.SC_OK);
               out.print("<input type='submit' value='Apply Policy'>");
               out.print("</form>");
//             getServletContext().getRequestDispatcher("/home").forward(req, resp);

              }
              out.print("</body></html>");       //Completes here
              resp.setStatus(HttpServletResponse.SC_OK);

          }


          else {
              resp.setStatus(HttpServletResponse.SC_BAD_REQUEST);

                          }
      }
      catch(Exception e) {
          e.printStackTrace();
      }

我出错了......在这个编码环境中...... //

3 个答案:

答案 0 :(得分:2)

您可以通过以下步骤识别并解决此问题。

  1. 检查用户名,密码存在于表格
  2. 如果有任何额外的空格,请尝试添加employee.trim()password.trim()。如果employeepassword的值为null,您将获得NullPointerException。所以这就是原因。然后检查null,然后再次尝试使用trim()
  3. 在查询之前打印结果,这样您就会知道自己做错了什么。
  4. 如果您正在使用请求参数,则需要在URL ?employeeid=someId&password=somepass
  5. 中传递它

答案 1 :(得分:1)

当您调试代码时,调试器是否进入IF语句 - 实际上是在IF语句的内部括号内输入,还是只是评估IF语句,(将其评估为“IF(False)”)然后转到else语句?

也许你的mySQL查询没有返回任何结果?尝试使用HasRows属性。

if (rs.HasRows) 
{ 
    while (rs.Read()) 
    { 
        // do stuff
    } 
    } 
    else 
    { 
       // notify user that query returned no results
    }
} 

答案 2 :(得分:0)

您的Resultset为空,这就是您进入else语句的原因。尝试直接在数据库上执行SQL,你得到任何记录吗?

我不确定这会解决您的问题(这取决于您是否只根据输出检查代码)但您的HTML结构是错误的:它应该是这样的:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
   <HEAD>

   </HEAD>
   <BODY>

   </BODY>
</HTML>

将HEAD部分混合到身体中。