临近新年,各地电信运营网站相应推出各种优惠游戏活动,开发过程中关于JSP页面的一个防止重复刷新重复做目的动作的代码,立此存照。
1、利用JSP的referer属性
2、利用session
上一级页面:
下一级页面:
1、利用JSP的referer属性
<%
String retUrl = "/sales/tianyigame/game_box.jsp";
String ComeUrl = "";
ComeUrl = request.getHeader("REFERER");//取得上一级页面的URL
if(ComeUrl == null || "".equals(ComeUrl)) {//判断非上一级页面过来的话,就返回上一级页面。
//response.sendRedirect(retUrl);//在内网是有效的
%>
<script language="javascript" type="text/javascript">
window.location.href = "/sales/tianyigame/game_box.jsp";//内外网都有效
</script>
<%
} else {//判断是从上一级页面过来的话,就做相应操作。
}
%>
2、利用session
上一级页面:
<%
long time = System.currentTimeMillis();
session.setAttribute(time + "", time + "");
%>
<script language="javascript" type="text/javascript">
window.location.href = "/sales/tianyigame/game_egg1.jsp?flag=<%=time%>";
</script>
下一级页面:
<%
String urlFlag = request.getParameter("flag") == null ? "1" : request.getParameter("flag");
//String sessionFlag = session.getAttribute(flag) == null ? "2" : (String) session.getAttribute(flag);
//System.out.println("urlFlag=>" + urlFlag + " #### sessionFlag=>" + session.getAttribute(urlFlag));
if (!urlFlag.equals(session.getAttribute(urlFlag))) {//非上一级页面过来。这里不能用sessionFlag和urlFlag直接比较,因为即使session中remove掉urlFlag,sessionFlag的值还是永远存在的。
%>
<script language="javascript" type="text/javascript">
window.location.href = "/sales/tianyigame/game_egg.jsp";
</script>
<%
} else {//上一级页面过来的
session.removeAttribute(urlFlag);
//做相应操作
%>