【发布时间】:2017-04-27 16:01:00
【问题描述】:
我对 servlet 的输出有疑问。似乎它什么也没输出。我使用的是 Apache Tomcat 8.0.43。它不返回任何异常。任何帮助将不胜感激。 这是我的 html 文件中的表单。
<form action="servlet1" method="POST">
<p>Email<br>
<input type="text" name="email" required>
</p>
<p>Password<br>
<input type="text" name="password" required>
</p>
<p><input type="submit"></p>
</form>
这是 servlet1,它处理输入并分派到另一个 servlet(servlet2) 以检查数据库中是否存在以下输入。
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String email = request.getParameter("email");
String password = request.getParameter("password");
if (Login.validate(email, password)) {
RequestDispatcher rd = request.getRequestDispatcher("servlet2");
rd.forward(request,response);
}
else {
out.print("Sorry username or password error");
RequestDispatcher rd = request.getRequestDispatcher("index.html");
rd.include(request,response);
}
out.close();
}
然后我得到了这个登录类,它有一个检查用户是否存在于数据库中的方法。我认为这就是问题所在。
public static boolean validate(String email,String password){
boolean status=false;
try {
Class.forName("com.mysql.jdbc.Driver");
String conStr = "jdbc:mysql://localhost:3306/virtuoso?user=root&password=";
Connection con = DriverManager.getConnection(conStr);
String sql = "SELECT * FROM tutor WHERE email=? and password=?";
PreparedStatement ps = con.prepareStatement(sql);
ps.setString(1,email);
ps.setString(2,password);
ResultSet rs = ps.executeQuery();
status = rs.next();
} catch (ClassNotFoundException | SQLException e) {
//empty
}
return status;
}
【问题讨论】:
-
不要默默吞下异常。因此,您无法判断错误是什么。
-
servlet2文件中写了什么?