Struts2拦截器之PrepareInterceptor

      如果你的Action实现了Preparable接口,则这个拦截器会在你执行真正的execute()方法之前执行prepare()方法。如果你想在真正的execute()方法执行之前加入一些其他逻辑的话,这个拦截器就非常有作用了.假如你的你在struts.xml中声明的访问方法为:method="login"; 而你的Action实现了Preparable方法,且实现了prepare()方法,此外还提供了prepareLogin()方法或者prepareDoLogin()方法,示例:

public String login() throws Exception {
System.out.println("Exec login()");
}

@Override
public void prepare() throws Exception {
System.out.println("Exec prerare()");
}

public void prepareLogin() throws Exception {
System.out.println("Exec prepareLogin()");
}

public void prepareDoLogin() throws Exception {
System.out.println("Exec prepareDoLogin()");
}
则控制台打印的顺序为:
Exec prepareLogin()
Exec prerare()
Exec login()
如果去掉prepareLogin()方法,则会执行prepareDoLogin()方法,则控制台打印顺序为:
Exec prepareDoLogin()
Exec prerare()
Exec login()
在Preparable接口中有个alwaysInvokePrepare字段,它表示是否执行prepare()方法,默认为true,如果你不需要执行prepare()方法,而只想执行特定的prepareXX()方法,你可以将此字段设为false;

你可能感兴趣的:(xml,struts)