【问题标题】:Servlet redirecting to blank page [duplicate]Servlet重定向到空白页[重复]
【发布时间】:2020-02-10 17:44:57
【问题描述】:

每当我点击submit 时,它都会重定向到一个空白页面,但网址可以正常工作 我对我的回复标签是否错误感到困惑

代码:

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();
}

请让我知道我缺少什么。

【问题讨论】:

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

标签: java redirect servlets


【解决方案1】:

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

之前:

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);

【讨论】:

    【解决方案2】:

    在 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);
    
             }
    

    【讨论】:

      猜你喜欢
      • 2016-03-28
      • 2017-09-03
      • 2016-10-20
      • 2016-03-25
      • 2018-09-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-10
      相关资源
      最近更新 更多