关于spring的重复提交问题啊!有人知道怎么解决吗?
重复提交定义:
A.JSP提交给xxx.do<执行insertDB()方法>,然后迁移到B.JSP,由于采用的是forward,所以IE上的URL还是
xxx.do,这时点刷新,就会在执行一次,执行insertDB()方法.
我的解决办法是:
在A.JSP上,将当前系统时间放入,一个hidden的文本框,同时放入Session。
然后在CLASS里面,获取这两个值如果一样就说明不是重复提交,并且将新的时间
放入session.代码如下:
<%
long _nowtime = System.currentTimeMillis();
session.setAttribute("sessiontime",_nowtime);
%>
<INPUT type='hidden' name='sessiontime' value='<%=_nowtime%>'>
然后再insertDB()里
String strTicketA = request.getParameter("sessiontime");
Long strTicketB = (Long) request.getSession().getAttribute("sessiontime");
if (strTicketA.equals(strTicketB.toString()))
{
Map _map = DAO.insertDB()//调用DAO层的方法
request.getSession().setAttribute("sessiontime",System.currentTimeMillis());
return new ModelAndView(movePage, Config.PAGEVIEW, _map);
}
else
return new ModelAndView(movePage, Config.PAGEVIEW, null);
我的问题是
1.这样写冗余太多啊,几乎每个方法都要写类似的判断代码。怎么能抽出来呢?
2.如果是重复提交,我就希望画面仍旧维持原样,怎么能如果是重复提交就维持原来
的画面呢?即:
return new ModelAndView(movePage, Config.PAGEVIEW, null);
这里我怎么写能维持原样呢?