我对doPost方法有疑问。 我制作了doPost方法,在db上执行查询。
代码:
try{
Statement st1 = con.createStatement();
PreparedStatement ps1=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 = '"+retetaidd+"'),('"+nota+"'))");
ps1.executeUpdate();
response.sendRedirect(request.getRequestURI());
st1.close();
con.close();
ps1.close();
}
catch (Exception e2)
{
e2.printStackTrace();
}
现在我希望在执行查询时页面不会重定向到另一个页面,我希望保持在同一页面上并执行查询。 我知道我应该替换
request.getRequestDispatcher("/health.jsp").forward(request, response);
但我不知道什么。有人可以帮助我吗?谢谢
答案 0 :(得分:0)
您可以使用HttpServletrequest.getRequestURI重定向同一页
httpResp.sendRedirect(httpReq.getRequestURI());
然后在请求范围中设置必要的数据,并使用RequestDispatcher的forward()方法来控制所需的JSP。
request.setAttribute("results", results);
request.getRequestDispatcher("/WEB-INF/page.jsp").forward(request, response);
如需完整演示,请转至Servlet Wiki
归功于@ BalusC
答案 1 :(得分:0)
如果您想在没有页面重新加载的情况下执行查询,那么您可以使用AJAX。否则你可以像这样使用RequestDispatcher
request.setAttribute("AttributeName", "AttributeValue");
request.getRequestDispatcher("/health.jsp").forward(request, response);
此处health.jsp与请求来自的位置和请求的位置相同。
答案 2 :(得分:0)
您可以做的只是将代码放在下面替换response.sendRedirect(request.getRequestURI());
String previousURL = request.getHeader("referer");
response.sendRedirect(previousURL);
这可能会解决您的问题