Java Servlet重定向到空白页

Java Servlet重定向到空白页,java,redirect,servlets,Java,Redirect,Servlets,每当我点击submit时,它就会重定向到一个空白页面,但url工作正常 我不知道我的回复标签是否错了 代码: protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException { Connection con=connector.getConnection(); String username

每当我点击
submit
时,它就会重定向到一个空白页面,但url工作正常 我不知道我的回复标签是否错了

代码:

protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {             
    Connection con=connector.getConnection();
    String username = request.getParameter("username");  
    String password = request.getParameter("password");
    String message = null;
    String url = null;
   try { 
        PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
        ps.setString(1, request.getParameter("username"));
        ps.setString(2, request.getParameter("password"));
        ResultSet rs = ps.executeQuery();
               if(rs.next()) {
               RequestDispatcher rd=request.getRequestDispatcher("practice1.jsp");
               rd.forward(request,response);

               }
               else {
               message="Invalid Input Please Try Again";
             request.setAttribute("message", message);
             request.setAttribute("url", url);

           }
   }


   catch(SQLException ex){
    message="ERROR"+ex.getMessage();
    ex.printStackTrace();
}
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
ps.setString(1, request.getParameter("username"));
ps.setString(2, request.getParameter("password"));
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=? and password=?");
ps.setString(1, username);
ps.setString(2, password);

请让我知道我遗漏了什么。

尝试通过更改以下代码来修复它:

之前:

protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {             
    Connection con=connector.getConnection();
    String username = request.getParameter("username");  
    String password = request.getParameter("password");
    String message = null;
    String url = null;
   try { 
        PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
        ps.setString(1, request.getParameter("username"));
        ps.setString(2, request.getParameter("password"));
        ResultSet rs = ps.executeQuery();
               if(rs.next()) {
               RequestDispatcher rd=request.getRequestDispatcher("practice1.jsp");
               rd.forward(request,response);

               }
               else {
               message="Invalid Input Please Try Again";
             request.setAttribute("message", message);
             request.setAttribute("url", url);

           }
   }


   catch(SQLException ex){
    message="ERROR"+ex.getMessage();
    ex.printStackTrace();
}
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
ps.setString(1, request.getParameter("username"));
ps.setString(2, request.getParameter("password"));
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=? and password=?");
ps.setString(1, username);
ps.setString(2, password);
之后:

protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {             
    Connection con=connector.getConnection();
    String username = request.getParameter("username");  
    String password = request.getParameter("password");
    String message = null;
    String url = null;
   try { 
        PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
        ps.setString(1, request.getParameter("username"));
        ps.setString(2, request.getParameter("password"));
        ResultSet rs = ps.executeQuery();
               if(rs.next()) {
               RequestDispatcher rd=request.getRequestDispatcher("practice1.jsp");
               rd.forward(request,response);

               }
               else {
               message="Invalid Input Please Try Again";
             request.setAttribute("message", message);
             request.setAttribute("url", url);

           }
   }


   catch(SQLException ex){
    message="ERROR"+ex.getMessage();
    ex.printStackTrace();
}
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=?'" + username + "' and password=?'" + password + "';");
ps.setString(1, request.getParameter("username"));
ps.setString(2, request.getParameter("password"));
PreparedStatement ps = con.prepareStatement( "Select * from data Where username=? and password=?");
ps.setString(1, username);
ps.setString(2, password);

在if块中,只要有数据,请求分派器就会将请求转发到practice1.jsp页面

if(rs.next()) {
               RequestDispatcher rd=request.getRequestDispatcher("practice1.jsp");
               rd.forward(request,response);
               }
但在else阻塞的情况下,仅请求设置如下:

request.setAttribute("message", message);
request.setAttribute("url", url);
但是如果我们想在UI中显示,我们应该指定响应而不是请求

else {
         message="Invalid Input Please Try Again";
         response.getWriter().print("<html><head><title>
                                 Oops an error happened!</title> </head>");
         response.getWriter().print("<body>"+message+"</body>");
         response.getWriter().println("</html>");
         //request.setAttribute("message", message);
         //request.setAttribute("url", url);

         }
else{
message=“输入无效,请重试”;
response.getWriter().print(“
哎呀,发生了一个错误!);
response.getWriter().print(“+message+”);
response.getWriter().println(“”);
//setAttribute(“消息”,消息);
//setAttribute(“url”,url);
}

如果代码执行
else
语句,则您不会将请求转发到任何地方。这会给你一个空白页。我甚至试着使用while和else,如果查询不正确的话。我不认为您的意思是在准备好的语句查询字符串中传递用户名和密码的值;您只需要设置参数(就像您在之后所做的那样)。有鉴于此,我相信您的代码会抛出一个异常,该异常在catch子句中被捕获,这意味着您没有重定向。检查日志文件中是否存在异常。