日期:2014-05-16  浏览次数:20407 次

JSP页面防止重复刷新做多次动作

临近新年,各地电信运营网站相应推出各种优惠游戏活动,开发过程中关于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);
                //做相应操作
%>