我正在插入数据库,操作完成后,我希望在插入后保持在同一页面和结果中。
现在插入后,当我尝试发送到同一页面时,我得到的结果是没有任何数据的页面。
这是我的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。
有人能帮帮我吗? 感谢。
答案 0 :(得分:0)
首先,你做的方式是错的,我仍然有一个解决方案。 而且你也没有解释整个流程。
仍然按照以下步骤操作,它会使您的代码紧密耦合,但仍可正常工作..
ps.executeUpdate();
//将您的提取代码放在这里
String destination =&#34; / Retete&#34;;
然后将提取的数据添加到变量
再次将其添加到回复
然后在您的jsp页面上显示该数据
最后你应该看起来像这样
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设计模式...