Struts2的拦截器和Servlet过滤器类似。在执行Action的execute方法之前,Struts2会首先执行在struts.xml中引用的拦截器,在执行完所有引用的拦截器的intercept方法后,会执行Action的execute方法。
Struts2拦截器类必须从com.opensymphony.xwork2.interceptor.Interceptor接口继承,在Intercepter接口中有如下三个方法需要实现:
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timer、params等。如果在< package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。
默认的拦截器:
< interceptor-ref name="exception"/>
< interceptor-ref name="alias"/>
< interceptor-ref name="servletConfig"/>
< interceptor-ref name="prepare"/>
< interceptor-ref name="i18n"/>
< interceptor-ref name="chain"/>
< interceptor-ref name="debugging"/>
< interceptor-ref name="profiling"/>
< interceptor-ref name="scopedModelDriven"/>
< interceptor-ref name="modelDriven"/>
< interceptor-ref name="fileUpload"/>
< interceptor-ref name="checkbox"/>
< interceptor-ref name="staticParams"/>
< interceptor-ref name="params">
Struts2拦截器类必须从com.opensymphony.xwork2.interceptor.Interceptor接口继承,在Intercepter接口中有如下三个方法需要实现:
void destroy();
void init();
String intercept(ActionInvocation invocation) throws Exception;
在Struts2中已经在struts-default.xml中预定义了一些自带的拦截器,如timer、params等。如果在< package>标签中继承struts-default,则当前package就会自动拥有struts-default.xml中的所有配置。
默认的拦截器:
< interceptor-ref name="exception"/>
< interceptor-ref name="alias"/>
< interceptor-ref name="servletConfig"/>
< interceptor-ref name="prepare"/>
< interceptor-ref name="i18n"/>
< interceptor-ref name="chain"/>
< interceptor-ref name="debugging"/>
< interceptor-ref name="profiling"/>
< interceptor-ref name="scopedModelDriven"/>
< interceptor-ref name="modelDriven"/>
< interceptor-ref name="fileUpload"/>
< interceptor-ref name="checkbox"/>
< interceptor-ref name="staticParams"/>
< interceptor-ref name="params">