临近新年,各地电信运营网站相应推出各种优惠游戏活动,开发过程中关于JSP页面的一个防止重复刷新重复做目的动作的代码,立此存照。
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); //做相应操作 %>