重复提交(引用他人)

刷新页面还会提交数据这样的解决办法就是利用struts的token
struts可以用token来解决重复提交的问题.源码和注释见附件
总结出来,希望对初学者有所帮助.
建一个Insert.jsp页面代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html:html locale="true">
  <head>
    <html:base />
    <title>insert.jsp </title>
  </head>
  <body>
  <html:form action="insert" method="post">
    <bean:message key="label.name"/> <html:text property="name" />
  <bean:message key="label.phone"/> <html:text property="phone"/>
    <bean:message key="label.address"/> <html:text property="address"/>
    <html:submit > <bean:message key="modify.add"/> </html:submit>
    <html:reset> <bean:message key="button.reset"/> </html:reset>
  </html:form>
<html:errors/>
  </body>
</html:html>
建一个InsertAction代码如下:
//Created by MyEclipse Struts
// XSL source (default): platform:/plugin/com.genuitec.eclipse.cross.easystruts.eclipse_4.1.1/xslt/JavaClass.xsl

package com.yourcompany.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.yourcompany.bean.ListBean;
import com.yourcompany.struts.form.ModifyForm;

/**
* MyEclipse Struts
* Creation date: 02-20-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class InsertAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
ModifyForm modifyForm = (ModifyForm) form;
//得到token
        String token_request =request.getParameter("org.apache.struts.taglib.html.TOKEN");
        //打出来看看是什么东东
        System.out.println("token in request is:"+ token_request);
        ActionErrors errors = new ActionErrors();
        //判断token是否有效,如果为假证明有重复提交,声明一个错误信息,并反馈出来
        if(!isTokenValid(request)){
    errors.add("insettoken",new ActionError("error.invalid.token"));

          saveErrors(request, errors);
          saveToken(request);
          return (new ActionForward(mapping.getInput()));
  }
        //当用户首次提交时返!isTokenValid()返回true
  else{
        resetToken(request);
  } 
        int result=new ListBean().add(modifyForm);

if(result==1){
return mapping.findForward("addlist");
}else{
return mapping.findForward("error");
}
}

}
建一个PrepareInsertAction代码如下:
package com.yourcompany.struts.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

/**
* MyEclipse Struts
* Creation date: 02-20-2007
*
* XDoclet definition:
* @struts.action validate="true"
*/
public class PrepareInsertAction extends Action {
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) {
        System.out.print("hello PrepareInsertAction");
        //创建一个新的令牌
        saveToken(request);
        return mapping.findForward("inserttoken");
}
}

 

 

这里有struts token一个例子下载

http://www.javaeye.com/topic/54945

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值