拦截器的工作原理,自定义拦截器的实现

struts2的一个优点就是它为我们提供了拦截器。那么拦截器是怎么工作的呢!


这是我自己写的一个拦截器类:

package tm.change.interceptor;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class LoginInterceptor implements Interceptor{

	@Override
	public void destroy() {
		System.out.println("@@@@@@@@@@@@@@@@@销毁");
		
	}

	@Override
	public void init() {
		System.out.println("@@@@@@@@@@@@初始化");
		
	}

	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		String name = (String) ActionContext.getContext().getSession().get("name");
		if(name!=null&& !name.equals("")){
			//invoke()方法执行说明拦截结束,否则被拦截
			arg0.invoke();
			return "success";
		}
		return "login";
	}

}

那拦截器怎么配置呢?

这是struts.xml中的一段代码,注意看注释




	
		
		
		
		
			
			
		
	
	
	


再看下面连个action,上面的action设置了自己的拦截器,所以它执行defaultStack

下面这个action没有设置自己的拦截器,所以它执行默认的拦截器 myStack



			
			/index.jsp
		
		
			/index.jsp
		


备注:有一点不得不提。那就是,都收到action请求时,都是先执行拦截器,然后再执行action中的method。

执行拦截器的时候,如果执行到 invoke() 方法,接着就执行method方法。如果没有执行invoke()方法,则不执行method方法。





你可能感兴趣的:(struts2框架,自定义插件类)