在Struts2中,如果我们已经定义了一个拦截器堆栈,那么它是以先进先出方式调用的。 因此,在后处理阶段,如果早期的一个拦截器返回一个控制字符串,结果将响应呈现给客户端,则会发生什么。 我想知道左边的拦截器是否会被处理。
答案 0 :(得分:1)
它会像这样工作。
只有在完全调用拦截器堆栈后才会调用您的操作方法。这意味着一旦在堆栈中成功调用第一个拦截器,它将调用堆栈中定义的下一个拦截器,并将引用存储在堆栈中这个链将继续调用,直到堆栈中的最后一个拦截器被调用
invocation.invoke()
这个调用是调用栈中定义的下一个拦截器的关键,或者这是它将在你的动作类中调用所需函数的最后一个。
现在在其他情况下假设一些拦截器失败说workflow
它将返回结果为INPUT
并将停止进一步执行拦截器并且框架将输出所需的JSP / Tempelate到用户。
在这种情况下,后处理/清除将以相反的顺序被调用,即最顶层或最近执行的拦截器将首先被调用,然后就这样调用。
这种后处理的想法是做任何清理工作或任何其他需要做的事情(比如清理资源等)
希望这会给你一些想法。