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;         
        }                      

Struts的Token(令牌)机制解决表单重复提交的问题

Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求...

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

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

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

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

Marvell交换机luaCLI引擎启动流程以及如何解决函数cpssInitSystem()被二次调用的问题

1.本文目的 (1)弄清luaCLI引擎的启动流程; (2)交换机从“命令窗口界面”切换到“luaCLI界面”,如何防止程序跑飞。 说明:从“命令窗口界面”切换到“luaCLI界面”,会调用函数lua...

UG二次开发时,系统相关配置以及调试时无法设置断点等问题解决

之前在公司,一直是刘老大建好了UG开发环境,我只需要在上面进行相关功能开发就行 后来又两天闲暇时间,自己建立一个UG OpenAPI的开发环境。 一下为相关步骤: 1. VS2010新建一个MFC...

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

在对Azure 进行二次开发过程中,首当其冲就是明白Azure的具体的”交互逻辑“,”消息机制“,”数据管理“,在说问题前,我想你对于Rest API 的使用,至少有了初步的了解。这里,我就不多说,微...

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

这是二次安装mysql时碰到的问题,记录下来,希望对后续碰到此类问题的伙伴有个帮助吧。 问题: 卸载mysql重新安装时,在进入MySQL Server Instance Configur...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Structs 令牌解决二次提交问题
举报原因:
原因补充:

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