Structs 令牌解决二次提交问题

原创 2006年05月18日 08:39:00

//解决二次提交问题(提交前)

          preSubmitValid(servletRequest,servletResponse);
          
//解决二次提交问题(提交)
    if(!submitValid(servletRequest,servletResponse))
     try
              {
               servletResponse.sendRedirect("public/repeatdeal.jsp");
               return null;
              }
              catch (Exception error)
              {
               servletRequest.setAttribute("errorMSG", "重复提交造成页面跳转出错:" + error.getMessage());
              }   
             
/**
         * 解决二次提交问题(提交前)

         * @param request
         * @param response
         */
        public void preSubmitValid(HttpServletRequest servletRequest,HttpServletResponse response)
        {
         counter = -1;
            servletRequest.getSession().setAttribute("submissioncount",
                    new Integer(counter));
            /**
             * 重要:

             * 通过调用 saveToken(request)方法,动态生成一个token,并且存放到session中,
             * 以便在以后可以在动态生成的页面中加入隐藏字段 <input type="hidden" name="org.apache.struts.taglib.html.TOKEN" value="动态值">
             * 只要调用了该方法,此后包含<html:form...>标签的页面中都会动态生成上面所说的隐藏字段。

             */
            this.saveToken(servletRequest);         
        }
        /**
         * 提交验证,检验是否是重复提交,如果重复提交跳转到统一处理页面
         * @param servletRequest
         * @param servletResponse
         * @return
         */
        public boolean submitValid(HttpServletRequest servletRequest,HttpServletResponse servletResponse)
        {
         counter += 1;
         servletRequest.getSession().setAttribute("submissioncount",new Integer(counter));
            if (!this.isTokenValid(servletRequest))
             return false;

            /**
             * 在认可了用户的合法提交后,一定要调用resetToken(request)重置token,这样session中就没有相应的token啦

             * 这样才能够保证用户再次提交相应数据时,能够检测出来。

             */
            this.resetToken(servletRequest);
            return true;         
        }                      

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Structs2或SSH项目中解决乱码问题

最近做项目遇到了乱码问题,稍微研究了下,总结了点自己的心得,轻喷。 第一种方式:配置拦截器,推荐。 package com.guigu.store.utils; import java.io.I...

二次安装mysql时出现的问题及解决

这是二次安装mysql时碰到的问题,记录下来,希望对后续碰到此类问题的伙伴有个帮助吧。 问题: 卸载mysql重新安装时,在进入MySQL Server Instance Configur...

交叉熵的解决代价函数为二次函数导致学习慢问题(S型激活函数)

1.从方差代价函数说起 代价函数经常用方差代价函数(即采用均方误差MSE),比如对于一个神经元(单输入单输出,sigmoid函数),定义其代价函数为: 其中y是我们期望的输出,a为神经元的实际输出...

Hadoop&Spark解决二次排序问题(Hadoop篇)

问题描述二次排序就是对每一个key对应的value进行排序,也就是对MapReduce的输出(KEY, Value(v1,v2,v3,……,vn))中的Value(v1,v2,v3,……,vn)值进行...

短信猫smsLib for java二次开发系列问题解决探讨

最近公司在网上购置了一款短信猫,要实现给客户发送短信的功能,厂家附带的开发包是smslib的java二次开发包,并附带了测试文件。 按照厂家提供的文档完成如下步骤: 具体的操作步骤如下: 1、把sms...

对Azure二次开发,解决资源“独占访问”的问题

在对Azure 进行二次开发过程中,首当其冲就是明白Azure的具体的”交互逻辑“,”消息机制“,”数据管理“,在说问题前,我想你对于Rest API 的使用,至少有了初步的了解。这里,我就不多说,微...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)