接口:Interceptorapache
void destroy();//拦截器销毁时调用的方法app
void init();//拦截器实例化调用的方法spa
String intercept(ActionInvocation invocation) throws Exception;//action方法执行时拦截处理方法debug
咱们都知道拦截器是配置到struts2.xml中的,多个拦截器造成了一个拦截器栈(struts有个默认的拦截器栈是配置到struts-default.xml中的)xml
通过一些类的解析最后生成一个DefaultActionInvocation,里面有ActionProxy,拦截器链(一个迭代器)对象
DefaultActionInvocation-->invoke()继承
循环迭代器,执行过滤器接口
[exception] => [com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor]ip
主要是拦截异常,而后对异常进行处理,拦截到异常后,经过ActionConfig找到对应的异常处理ci
[alias] => [com.opensymphony.xwork2.interceptor.AliasInterceptor]
[servletConfig] => [org.apache.struts2.interceptor.ServletConfigInterceptor]
判断Action类是否继承了ServletRequestAware,ServletResponseAware,ParameterAware,ApplicationAware,SessionAware,RequestAware,PrincipalAware接口,注入相应的对象
[i18n] => [com.opensymphony.xwork2.interceptor.I18nInterceptor]
国际化相关的一些东西
[prepare] => [com.opensymphony.xwork2.interceptor.PrepareInterceptor]
Action是否实现了Preparable接口,提早执行接口的prepare()方法完成一些初始化准备
[chain] => [com.opensymphony.xwork2.interceptor.ChainingInterceptor]
拷贝一些栈值
[scopedModelDriven] => [com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor]
Action是否实现了ScopedModelDriven接口,进行一些这个接口相关操做
[modelDriven] => [com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor]
Action是否实现了ModelDriven接口,调用getModel方法获取多一个对象,放到堆栈的栈顶
[fileUpload] => [org.apache.struts2.interceptor.FileUploadInterceptor]
文件上传拦截器,若是是文件上传请求,将存储到指定位置,并返回文件对象引用
[checkbox] => [org.apache.struts2.interceptor.CheckboxInterceptor]
处理上传的参数是___checkbox__ 主要用来处理复选框的
[datetime] => [org.apache.struts2.interceptor.DateTextFieldInterceptor]
日期时间拦截器,主要处理datetime组件
[multiselect] => [org.apache.struts2.interceptor.MultiselectInterceptor]
下拉框拦截器 __multiselect_
[staticParams] => [com.opensymphony.xwork2.interceptor.StaticParametersInterceptor]
静态参数拦截器,Action若是实现了Parameterizable接口,将注入parameters参数,也就是ActionConfig中的params属性,同时也会把params值放到对应的值栈中
[actionMappingParams] => [org.apache.struts2.interceptor.ActionMappingParametersInteceptor]
[params] => [com.opensymphony.xwork2.interceptor.ParametersInterceptor]
[conversionError] => [org.apache.struts2.interceptor.StrutsConversionErrorInterceptor]
处理参数转换异常错误
[validation] => [org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor]
验证拦截器,检查要执行的action方法是否有SkipValidation注解,若是有,跳过验证,不然验证
[workflow] => [com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor]
ValidationAware
[debugging] => [org.apache.struts2.interceptor.debugging.DebuggingInterceptor]
[deprecation] => [org.apache.struts2.interceptor.DeprecationInterceptor]