欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

防止表单重复提交token机制

程序员文章站 2022-03-16 17:12:04
...

防止用户注册信息或者订单信息重复提交写入数据库,使用session的token令牌机制 
也叫做令牌机制,除了重定向以外的另一种处理表单重复提交的方法

login.jsp================================================


<div align="center">
        <h1>令牌机制</h1>
        <s:form action="token.action">
            <s:textfield name="username" label="username"></s:textfield>
            <s:password name="password" label="password"></s:password>
            <s:token></s:token>
            <s:submit value="submit"></s:submit>//该表单界面一定要用标签写,只有标签才有效,而且一定要在form里放上token标签
        </s:form>
</div>

tokenAction=============================================

public class TokenAction extends ActionSupport {
    private String username;
    private String password;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String execute() throws Exception {
        return SUCCESS;
    }
}

Struts.xml===============================================

<action name="token" class="Action.TokenAction">
           <result name="success">/token/success.jsp</result>
           <result name="invalid.token">/token/field.jsp</result>     //重复提交时转向的页面,名字是固定的
           <interceptor-ref name="token"></interceptor-ref>
           <interceptor-ref name="defaultStack"></interceptor-ref>      //这两个拦截器标签一定要写
</action>

Success.jsp==============================================

<body>
      <s:property  value="username"/><br>
      <s:property  value="password"/>
  </body>

Filed.jsp================================================

 <body>
     不能重复提交表单
  </body>

防止表单重复提交token机制

防止表单重复提交token机制

在请求login.jsp页面的时候就会在客户端和服务器端各有一个随机数,并且相同,然后提交表单的时候进行比对,如果相同则认为是第一次提交,比对之后服务器端生成一个新的随机数,重复提交表单的时候客户端还是原来的随机数,而服务器端已经是新的了,所以转向失败页面。提交成功后刷新页面和回退回去不刷新再次提交都会比对不成功,而回退回去刷新又相当于重新请求login.jsp,又重新开始了,所以可以提交成功

相关标签: token