插入db后保持同一页面

时间:2016-06-03 07:55:01

标签: java jsp servlets

我正在插入数据库,操作完成后,我希望在插入后保持在同一页面和结果中。

现在插入后,当我尝试发送到同一页面时,我得到的结果是没有任何数据的页面。

这是我的java代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 try{

            DBConnection connection = new DBConnection();
            Connection con = connection.Connect();


         PreparedStatement ps=con.prepareStatement("INSERT into nota (Id_utilizator,Nume_reteta,Nota) values ((SELECT Id_user from user where E_mail = '"+request.getSession().getAttribute("email")+"'),(SELECT Nume FROM reteta where Nume = '"+retetaid+"'),('"+nota+"'))");
         ps.executeUpdate();
         String destination = "/Retete";
         RequestDispatcher rd = request.getRequestDispatcher(destination);
         rd.forward(request, response);

       con.close();
       ps.close();
       }
       catch (Exception e2)
       {
         e2.printStackTrace();
       }

       finally
       {
       out.close();
        }
    }

这是我的jsp表单,其中称为my method:

  <form action = "Nota" method="post">                                  
    <div class="grid_6"> 
    <input type="hidden" name="reteta1"  value="${Nume} "/> 
    <input   type="submit" name="nota" class="btnrtg" value="Acorda Nota!"/> 
    <input class="star star-5" id="star-5" type="radio" name="mark" value="100"/>
    <label class="star star-5" for="star-5"></label>
    <input class="star star-4" id="star-4" type="radio" name="mark" value="75"/>
    <label class="star star-4" for="star-4"></label>
    <input class="star star-3" id="star-3" type="radio" name="mark" value="50"/>
    <label class="star star-3" for="star-3"></label>
    <input class="star star-2" id="star-2" type="radio" name="mark" value="25"/>
    <label class="star star-2" for="star-2"></label>
    <input class="star star-1" id="star-1" type="radio" name="mark" value="0"/>
    <label class="star star-1" for="star-1"></label>    

    </div>
</form>

In&#34; Retete&#34;是另一个从db操作中提取的servlet。

有人能帮帮我吗? 感谢。

1 个答案:

答案 0 :(得分:0)

首先,你做的方式是错的,我仍然有一个解决方案。 而且你也没有解释整个流程。

仍然按照以下步骤操作,它会使您的代码紧密耦合,但仍可正常工作..

  1. 在插入之后和转发之前在
  2. 中添加数据提取代码
      

    ps.executeUpdate();

         

    //将您的提取代码放在这里

         

    String destination =&#34; / Retete&#34;;

    1. 然后将提取的数据添加到变量

    2. 再次将其添加到回复

    3. 然后在您的jsp页面上显示该数据

    4. 最后你应该看起来像这样

        

      DBConnection connection = new DBConnection();

           

      连接con = connection.Connect();

           

      PreparedStatement ps = con.prepareStatement(&#34; INSERT into nota(Id_utilizator,Nume_reteta,Nota)值((来自用户的SELECT Id_user,其中E_mail =&#39;&#34; + request.getSession()。getAttribute (&#34;电子邮件&#34;)+&#34;&#39;),(选择Nume FROM reteta,其中Nume =&#39;&#34; + retetaid +&#34;&#39;), (&#39;&#34 + + NOTA&#34;&#39;))&#34);

           

      ps.executeUpdate();

           

      String destination =&#34; / Retete&#34;;

           

      //在此处输入数据提取逻辑,并将所有数据保存到单个通用变量

           

      //现在将变量添加到请求中,如request.setAttribute(&#34; variableName&#34;,variable);

           

      RequestDispatcher rd = request.getRequestDispatcher(destination);

           

      rd.forward(请求,回复);

      但是请记住,如果你要从这里重定向到其他servlet,那么如果你想在JSP中使用这些数据,就不要将response.sendRedirect("");语句放在其他servlet中 再一次,这不是正确的方法,首先参考MVC设计模式...