FilterDispatcher的作用

来源:互联网 发布:欧莱雅男士 知乎 编辑:程序博客网 时间:2024/04/30 11:28

FilterDispatcher的作用

1.用来装载配置和设置静态资源的package

  public void init(FilterConfig filterConfig) throws ServletException {       
         init();      
         String param = filterConfig.getInitParameter("packages");
         String packages = "org.apache.struts2.static template org.apache.struts2.interceptor.debugging";
        if (param != null) {
             packages = param + " " + packages;
         }
        this.pathPrefixes = parse(packages);
     }

  public void init() {

        if (configurationManager == null) {
             configurationManager = new ConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);//用来初始化ConfigurationManager
         }

         init_DefaultProperties(); // org.apache.struts2.default.properties配置的provider初始化
         init_TraditionalXmlConfigurations(); // struts-default.xml,struts-plugin.xml,struts.xml配置的provider初始化
         init_LegacyStrutsProperties(); //
         init_ZeroConfiguration(); //
         init_CustomConfigurationProviders(); //
         init_MethodConfigurationProvider();
         init_FilterInitParameters() ; //
         init_AliasStandardObjects() ; //

         Container container = init_PreloadConfiguration();
         init_CheckConfigurationReloading(container);
         init_CheckWebLogicWorkaround(container);

     }

2.包装转换请求

1     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
2
3        
4          HttpServletRequest request = (HttpServletRequest) req;
5          HttpServletResponse response = (HttpServletResponse) res;
6          ServletContext servletContext = getServletContext();
7 ………………………………
8              request = prepareDispatcherAndWrapRequest(request, response);//作些编码准备和为了上传文件作包装
9              ActionMapping mapping= actionMapper.getMapping(request, getConfigurationManager()); // 把请求和配置文件挂勾            
10
11         
12 ……………………………………
13           serviceAction(request, response, servletContext, mapping);//创建Action上下文,根据给定的mapping装载ActionProxy,然后指定的Action方法被执行,输出进入response
14
15            ActionContextCleanUp.cleanUp(req);//
16       ………………
17      }
18
原创粉丝点击