不需要,如果要重用,可以写个基类,其他需要避免重复提交的action都继承这个类就行了

解决方案 »

  1.   

    那不需要的话,怎么进行this.saveToken(request)? 
    比如一个登录login.jsp ,如果不需要前一个action进行保存令牌的话,那应该在哪里存储令牌让jsp提交到后一个action进行令牌比较呢?您说可以继承一个基类,是不是表示可以写在基类的execute方法里,这样后一个action继承下来,thken不就是同一个么???
    可否说详细一些,因为刚刚接触java,谢谢您
      

  2.   

    刚刚试了一下,无论第一次还是重复提交还是一样为false;
    基类:public class BaseActionLoad extends Action { public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response)
    throws Exception {

    this.saveToken(request);
    return null;
    }}
    login.jsp提交的后一个action:public class LoginAction extends BaseActionLoad {

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    HttpServletRequest request, HttpServletResponse response) {

    String backstr = "";

    LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

    if(isTokenValid(request, true)){
    System.out.println(mapping.getPath());
    String uname = loginForm.getU_name();
    String upwd = loginForm.getU_pwd();
    String uyzm = loginForm.getU_yzm();
    System.out.println(uname + "   " + upwd + "   " + uyzm);
    backstr = "main";
    }else{
    backstr = "error";
    }

    return mapping.findForward(backstr);
    }
    }
    还望高人指点一二
      

  3.   

    需要令牌的页面不要直接进,用action转发,比如可以用LoginAction跳转到Login.jsp。
    令牌跟具体的操作有关,重用也没有太大的意义
      

  4.   

    那不是又回到开始了,要有一个跳转action,跳转到jsp,在另一个提交的action验证令牌?
      

  5.   

    你用同一个action的不同方法处理不就行了吗,你上面的代码子类的execute已经把父类的覆盖了,当然不行
      

  6.   

    谢谢您,现在貌似已经好了,不知道这样写算不算正确,请您过目一下:
                    String backstr = "";
    ActionErrors errors = new ActionErrors();
    LoginForm loginForm = (LoginForm) form;// TODO Auto-generated method stub

    if(isTokenValid(request, true)){
    System.out.println(mapping.getPath());
    String uname = loginForm.getU_name();
    String upwd = loginForm.getU_pwd();
    String uyzm = loginForm.getU_yzm();
    System.out.println(uname + "   " + upwd + "   " + uyzm);
    backstr = "main";
    this.resetToken(request); 
    }else{
    errors.add(ActionMessages.GLOBAL_MESSAGE,
    new ActionMessage("usub_err"));
    backstr = "index";
    loginForm.setU_pwd("");
    loginForm.setU_yzm("");
    this.saveToken(request);
    }

    return mapping.findForward(backstr);