下面是我的代码。使用database.i进行登录表单验证从jsp页面调用此servlet(即当我单击登录页面的提交按钮时,它将被定向到此servlet)。但是,当我运行它加载并只显示一个空白页面。任何人都告诉我什么是错的。
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
PrintWriter out = response.getWriter();
response.setContentType("text/html;charset=UTF-8");
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>check</title>");
out.println("</head>");
out.println("<body>");
out.println("<h2>check</h2>");
out.println("</body>");
out.println("</html>");
String name=request.getParameter("username");
String pass=request.getParameter("password");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection con;
con = DriverManager.getConnection("jdbc:odbc:BusPassDS");
Statement stmt=con.createStatement();
ResultSet rs=stmt.executeQuery("SELECT * FROM logTab");
while(rs.next())
{
String dbName=rs.getString("username");
String dbPass=rs.getString("password");
if((dbName.equals(name))&&(dbPass.equals(pass)))
{
RequestDispatcher dis=request.getRequestDispatcher("success.jsp");
dis.forward(request,response);
}
else
{
out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Login Error</title>");
out.println("</head>");
out.println("<body>");
out.println("<h2>invalid username or password</h2>");
out.println("</body>");
out.println("</html>");
}
}
} catch (SQLException | ClassNotFoundException ex) {
Logger.getLogger(ValidationServlet.class.getName()).log(Level.SEVERE, null, ex);
}
}
答案 0 :(得分:0)
如果输出为空,则必须抛出异常。 out.println()
来电可能永远不会发送到客户端,因为它们没有被刷新。
要调试此问题,请尝试将out.println()
添加到catch
块。另请尝试在out.flush()
块中添加一些try
次调用。
答案 1 :(得分:0)
当您点击提交按钮时,它POST
,而不是GET
。您的servlet方法是doGet()
。尝试将一些内容放入doPost()
。
答案 2 :(得分:0)
只需将doGet中代码的内容复制到doPost就可以了,或者设置form method =&#34; get&#34;但是在密码验证的情况下,post更好,并在doPost中编写代码以进行验证