// 页面代码start
<%
Random random = new Random();
//生成随机flag,
Integer flag=new Integer(random.nextInt());
session.setAttribute("flag",flag);
%>
//form代码
<input type=hidden name="flag" value="<%=flag%>">
//页面代码end
//处理表单代码 start
Integer flag =new Integer(Integer.parseInt(request.getParameter("flag")));
HttpSession session=request.getSession();
if (flag.equals(session.getAttribute("flag"))){
//在此调用dao
destroyFlag(session);
} else {
System.out.println("重复提交");
}
/**
* 销毁flag
* @param session
*/
public void destroyFlag(HttpSession session) {
session.removeAttribute("flag");
}
//处理表单代码end这做最好结合让jsp页面过期一起用。当用户返回到上一表单页面时(按backspase键、返回按钮,右击--返回),让表单页面过期。这样才可以让用户主动的刷新jsp而从新生成一个session.setAttribute("flag").如果不这样flag值不会更新,返回以后的操作数据是不会更新到数据库的。
(页面过期的机制还不完全了解,只知道一种实现方法但觉得不怎么好使。摸索中...)希望有人能提出更好的解决方法.让页面form的、session的flag更新。
评论0