我从网上找了好久这类代码,全都是在新页面提交才能实现Token问题,可我的项目是本页提交
具体图片请看我的像册kong_d_f1104.photo.163.com
里面有一张我项目的截图
这个问题已经困扰我好几天了,谁能把jsp,action,xml的代码全都帮我贴出来啊?先谢谢了

解决方案 »

  1.   

    很难找到本页提交解决token问题的代码,谁写过?贴出来看看,谢谢
      

  2.   

    没用过struts的token,我是自己写的。
    在servlet里面往session和request里面设置token,提交的页面里面有个叫token的隐藏域,用request里的token值对其进行附值,然后下次提交的时候,在servlet里面比较session和request里的token值是不是一样的。我感觉这样的话,对于是提交到本页还是提交到新页面没什么区别吧
      

  3.   

    songchaoo(石头虎) 
       你说的方式我也试过,可能小弟道行太浅,没有成功,第一次提交就走失败的分支
      

  4.   

    在进入保存页面的action里写    
       this.saveToken(request);
    在保存的action里写
        if (this.isTokenValid(request)) {
          "重复提交";
        }
        else {"业务处理"
    }你试一下吧
      

  5.   

    if (isTokenValid(request, true)) { //判断是否是指定令牌,否则为重复提交 try { if (useraccounthbg == null
    || useraccounthbg == ""
    || useraccounthbg.equals("")) {
    //没有登陆或session已经失效
    return mapping.findForward("nosession"); } else { //写入数据库            
    visitingBO.addVisiting(visiting, useraccounthbg, useridhbg);
    ifsuccess = true;
    } } catch (Throwable e) {
    System.out.println(e.getMessage());
    ActionError error = new ActionError(e.getMessage());
    errors.add(ActionErrors.GLOBAL_ERROR, error);
    ifsuccess = false;
    } } else { //表单重复提交,产生新令牌
    saveToken(request); ActionError error = new ActionError("error.add.again");
    errors.add(ActionErrors.GLOBAL_ERROR, error); } //处理后,重新浏览页面 try { if (ifsuccess == true) { //添加成功,初始化各个框
    visiting.setContent(""); ActionError error = new ActionError("error.addvisiting.success");
    errors.add(ActionErrors.GLOBAL_ERROR, error); } //刷新添加后的页面 Collection VisitingList = visitingBO.ListVisiting(useraccounthbg,prisonid); request.setAttribute("name", name);
    request.setAttribute("user_id", user_id);
    request.setAttribute("prisonid", prisonid); request.setAttribute("visitingList", VisitingList); //提交成功,产生新令牌
    saveToken(request); } catch (Throwable e) {
    System.out.println(e.getMessage());
    ActionError error = new ActionError(e.getMessage());
    errors.add(ActionErrors.GLOBAL_ERROR, error);
    } saveErrors(request, errors);
    return mapping.findForward("addsuccess");
      

  6.   

    提交的时候可能你用了2次,,用JS控制 按流点击后让他无法再点<input type=button value=发表 name=up style="margin: 3px" onclick=revertAdd(); id="up" />function revertAdd();{
    var vForm = document.forms[0];
    vForm.up.disabled = true;...
    ...其实重复有可能是这个问题 就是你把一个图片加了<a>连接 又加了 onclick 造成多次提交正常的话一个触发是不会多次提交的。
      

  7.   

    要领会request域及session域的区别。