实际上我在这段代码中遇到了逻辑问题
问题:当我输入正确的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();
}
我出错了......在这个编码环境中...... //
答案 0 :(得分:2)
您可以通过以下步骤识别并解决此问题。
employee.trim()
和password.trim()
。如果employee
或password
的值为null,您将获得NullPointerException。所以这就是原因。然后检查null,然后再次尝试使用trim()
?employeeid=someId&password=somepass
答案 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部分混合到身体中。