Struts2 拦截器过滤方法(二十八)

1.默认情况下,如果为某个Action配置拦截器,则这个拦截器将拦截Action中的所有方法。但是有时候并不是想拦截Action中的所有方法,而是值需要拦截其中某一个,或者某几个方法,此时就需要使用拦截器的方法过滤特性了。

为了实现拦截器的方法过滤特性,Struts2提供了一个MethodFiledInterceptor抽象类。这个类重写了AbstractInterceptor类中的interceptor()方法,并且提供了doInteceptor(ActionInvocation invocation)抽象方法。

2,方法过滤参数
excluedMethods:执行拦截器拒绝拦截的方法列表,如果有多个方法名之间使用英文“,”分割,例如指定该参数值为login,register 那么拦截器将不会拦截login()he register()方法。

includeMethods:指定拦截器需要拦截的方法,如果有多个方法,则用英文“,”分割。例如指定该参数值为 method1,method2,那么拦截器将拦截method1和method2方法();


定义拦截器类

package com.sh.interceptor;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;

public class MethodInterceptor extends MethodFilterInterceptor {

	@Override
	protected String doIntercept(ActionInvocation invocation) throws Exception {
		System.out.println("拦截器起作用了!");
		return invocation.invoke();
	}
}


action

package com.sh.action;

import com.opensymphony.xwork2.ActionSupport;

public class MethodAction extends ActionSupport{
	public String execute(){
		System.out.println("execute()执行了!");
		return SUCCESS;
	}
	
	public String login(){
		System.out.println("login()方法执行!");
		return SUCCESS;
	}
	
	public String register(){
		System.out.println("register()方法");
		return SUCCESS;
	}
}


struts.xml





	
	
	
	 
	
	
	
		
			
		
		
			/success.jsp
			/login.jsp
			
				execute
				
			
			
		
	
	




--访问地址
http://localhost:8080/Struts2_inteceptorMethod/method!login.action
可以看到拦截器没有拦截
http://localhost:8080/Struts2_inteceptorMethod/method.action
可以看到拦截器拦截了
  • Struts2_inteceptorMethod.zip (3.3 MB)
  • 下载次数: 31

你可能感兴趣的:(doIntercept,拦截指定的方法)