struts2 动态加载struts目录下的所有 struts配置文件
import org.apache.struts2.config.StrutsXmlConfigurationProvider; import org.apache.struts2.dispatcher.Dispatcher; import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter; import org.springframework.core.io.Resource; import org.springframework.core.io.support.PathMatchingResourcePatternResolver; import javax.servlet.FilterConfig; import java.io.IOException; /** * Created by serv on 14-6-19. */ public class StrutsFilter extends StrutsPrepareAndExecuteFilter { @Override protected void postInit(Dispatcher dispatcher, FilterConfig filterConfig) { String patternPathConfig = filterConfig.getInitParameter("patternPathConfig"); PathMatchingResourcePatternResolver pathMatchingResourcePatternResolver = new PathMatchingResourcePatternResolver(); try { Resource[] resources = pathMatchingResourcePatternResolver.getResources("classpath*:"+patternPathConfig+"/*.xml"); for(Resource resource : resources){ dispatcher.getConfigurationManager() .addContainerProvider(new StrutsXmlConfigurationProvider(patternPathConfig+"/"+resource.getFilename(), false, filterConfig.getServletContext())); } } catch (IOException e) { e.printStackTrace(); } dispatcher.getConfigurationManager().reload(); } }
web.xml
<filter> <filter-name>struts2</filter-name> <filter-class> xxx.yyy.platform.base.filter.StrutsFilter </filter-class> <init-param> <param-name>patternPathConfig</param-name> <param-value>struts</param-value> </init-param> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这里配置的是 自动扫描 classpath:struts 目录下的xml文件加载为struts的配置文件