现在的位置: 首页 > 综合 > 正文

struts2中如何自动加载xml文件(不用修改配置文件)

2013年10月12日 ⁄ 综合 ⁄ 共 2623字 ⁄ 字号 评论关闭

1.这个是我在网上找的,作个比较(需要修改web.xml)  在web.xml配置初始参数config

Xml代码  收藏代码
  1. <filter>  
  2.    <filter-name>struts2 </filter-name>  
  3.    <filter-class>  
  4.        org.apache.struts2.dispatcher.FilterDispatcher  
  5.    </filter-class>  
  6.    <init-param>   
  7.       <param-name>config </param-name>   
  8.       <param-value>struts-default.xml,struts-plugin.xml,/WEB-INF/struts.xml </param-value>   
  9.    </init-param>  
  10. </filter>  
  11.   
  12. <filter-mapping>   
  13.    <filter-name>struts2 </filter-name>  
  14.    <url-pattern>/* </url-pattern>   
  15. </filter-mapping>  

 以上配置方式已通过测试,成功!,在些方法要经常改动web.xml,多人合作开发的话,很容易冲突

2.在struts.xml中使用include标签(需要修改公共的xml文件)
http://www.qingsoft.net/bbs/html/article/1094.jhtml

 

3.以上方法在多人开发时比较麻烦,以下也就是我自己的方法喽
1.重写FilterDispatcher 类的三个方法,我的struts-*.xml的路径在WEB-INF/modules/struts文件夹下

,JLTEnvironment类为我的应用的配置路径

Java代码  收藏代码
  1. public class JLTFilterDispatcher extends FilterDispatcher {   
  2. @Override  
  3.  protected Dispatcher createDispatcher(FilterConfig rConfig)         {   
  4.    Map <String, String> params = new HashMap <String, String>();  
  5.   
  6.    for (Enumeration e =  filterConfig.getInitParameterNames);  
  7.           e .hasMoreElements();)   
  8.   {   
  9.         String name = (String) e.nextElement();   
  10.         String value = filterConfig.getInitParameter(name);  
  11.         params.put(name, value);   
  12.   }   
  13.   // 加载modules下的struts配置文件   
  14.   getStrutsConfig(params);   
  15.    return  
  16.    new Dispatcher(filterConfig.getServletContext(), params);   
  17. }  
  18.   
  19. // 加载modules下的struts配置文件   
  20. private void getStrutsConfig(Map <String, String> m) {   
  21.    String strutsPath =  
  22.    new String( "struts-default.xml,struts-plugin.xml,struts.xml");   
  23.    File f = new File(JLTEnvironment.getModulesHome()+"/struts");   
  24.    if (f.getName().equals("struts")) {   
  25.          File[] ff = f.listFiles(); if (ff != null && ff.length > 0) {   
  26.          for (int i = 0; i < ff.length; i++) {   
  27.                String fname = ff[i].getName();   
  28.                if (fname.startsWith("struts-")   
  29.                    && fname.endsWith(".xml")) {  
  30.                      strutsPath+=","+ff[i].getAbsolutePath();  
  31.                 }   
  32.         }   
  33.     }  
  34.   
  35.   m.put("config", strutsPath);  
  36. }  
  37.   
  38. @Override   
  39. public void init(FilterConfig filterConfig) throws ServletException {   
  40.    //获得应用的路径   
  41.   ServletContext ctx = filterConfig.getServletContext();   
  42.    String home = ctx.getRealPath("/");  
  43.    home = home.replace('\\', '/');   
  44.    if (!home.endsWith("/")) {  
  45.          home = home + "/";  
  46.    }  
  47.   //初始化应用环境参数   
  48.   JLTEnvironment.init(home, ctx); super.init(filterConfig);   
  49. }   

 

2.web.xml更改为

 

Xml代码  收藏代码
  1. <filter>   
  2.    <filter-name>struts2 </filter-name>  
  3.    <filter-class>  
  4.          com.jlt.core.JLTFilterDispatcher   
  5.    </filter-class>  
  6. </filter>  

 

抱歉!评论已关闭.