接口: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]