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的配置文件