【问题标题】:jsp forward / sendredirect issuejsp转发/发送重定向问题
【发布时间】:2015-04-29 17:04:47
【问题描述】:

给定两个 jsp:myFirstJsp.jspmySecondJsp.jsp

myFirstJsp.jsp 从另一个表单接收提交参数,将一些值存储在数据库中,如果一切顺利,则转发到mySecondJsp.jsp,发送几个参数如下:

<jsp:forward page="mySecondJsp.jsp">
<jsp:param name="param1" value='<%=request.getParameter("param1")%>'/>
<jsp:param name="param2" value='<%=request.getParameter("param2")%>'/>
</jsp:forward>

一切正常,但如果用户按F5或刷新页面,就会出现异常,因为URL仍然指向“myFirstJsp.jsp”,所以基本上会出现重复插入异常,我想防止这种情况发生。

另一个可用的选项是使用sendRedirect 而不是转发,如下所示:

response.sendRedirect( "mySecondJsp.jsp?param1=somevalue&param2=somevalue" );

但是,在这种情况下,用户可以看到参数,尽管通常它们不会更改它们,但我也需要防止这种情况发生。

有什么办法可以避免这两种情况?

【问题讨论】:

标签: java jsp


【解决方案1】:

您可以使用以下方法在 myFirstJsp.jsp 中设置请求参数并在 mySecondJsp.jsp 上获取:

request.setAttribute("param_name","param_value");
request.getAttribute("param_name");

同样,您可以将值放入会话中。

但是,如果你想防止表中的记录重复,那么你可以在数据库中编写一个过程来处理这个问题。

【讨论】:

  • 非常感谢!!重复记录不是问题。这样做的尝试是我试图避免的,因此用户不会收到错误/异常。所以你是说我可以将 sendRedirect 与这些 setAttribute/getAtrribute 一起使用??
  • 不,您不能将 request.setAttribute/getAtrribute 与 sendRedirect 一起使用。在 sendRedirect 情况下,只有 session.setAttribute/getAtrribute 可以帮助您。
猜你喜欢
  • 1970-01-01
  • 2012-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-21
  • 2013-08-07
  • 1970-01-01
  • 2011-12-05
相关资源
最近更新 更多