`

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

阅读更多

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

<filter>
   <filter-name>struts2 </filter-name>
   <filter-class>
       org.apache.struts2.dispatcher.FilterDispatcher
   </filter-class>
   <init-param> 
      <param-name>config </param-name> 
      <param-value>struts-default.xml,struts-plugin.xml,/WEB-INF/struts.xml </param-value> 
   </init-param>
</filter>

<filter-mapping> 
   <filter-name>struts2 </filter-name>
   <url-pattern>/* </url-pattern> 
</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类为我的应用的配置路径

public class JLTFilterDispatcher extends FilterDispatcher { 
@Override
 protected Dispatcher createDispatcher(FilterConfig rConfig)         { 
   Map <String, String> params = new HashMap <String, String>();

   for (Enumeration e =  filterConfig.getInitParameterNames);
          e .hasMoreElements();) 
  { 
        String name = (String) e.nextElement(); 
        String value = filterConfig.getInitParameter(name);
        params.put(name, value); 
  } 
  // 加载modules下的struts配置文件 
  getStrutsConfig(params); 
   return
   new Dispatcher(filterConfig.getServletContext(), params); 
}

// 加载modules下的struts配置文件 
private void getStrutsConfig(Map <String, String> m) { 
   String strutsPath =
   new String( "struts-default.xml,struts-plugin.xml,struts.xml"); 
   File f = new File(JLTEnvironment.getModulesHome()+"/struts"); 
   if (f.getName().equals("struts")) { 
         File[] ff = f.listFiles(); if (ff != null && ff.length > 0) { 
         for (int i = 0; i < ff.length; i++) { 
               String fname = ff[i].getName(); 
               if (fname.startsWith("struts-") 
                   && fname.endsWith(".xml")) {
                     strutsPath+=","+ff[i].getAbsolutePath();
                } 
        } 
    }

  m.put("config", strutsPath);
}

@Override 
public void init(FilterConfig filterConfig) throws ServletException { 
   //获得应用的路径 
  ServletContext ctx = filterConfig.getServletContext(); 
   String home = ctx.getRealPath("/");
   home = home.replace('\\', '/'); 
   if (!home.endsWith("/")) {
         home = home + "/";
   }
  //初始化应用环境参数 
  JLTEnvironment.init(home, ctx); super.init(filterConfig); 
} 

 

2.web.xml更改为

 

<filter> 
   <filter-name>struts2 </filter-name>
   <filter-class>
         com.jlt.core.JLTFilterDispatcher 
   </filter-class>
</filter>

 

3.这样,WEB-INF/modules/struts下的所有以struts-开头的以xml结尾的xml文件都会被自动加载进去,

  不用去改其它配置了,呵呵 

  再添加struts配置文件的话,只要放在WEB-INF/modules/struts目录下,会自动被加载

 

分享到:
评论
10 楼 inbow 2009-05-13  
楼主把JLTEnvironment贴出来吧
9 楼 Dead_knight 2009-04-18  
smilebug 写道
wangneng_001 写道
myyate 写道
wangneng_001 写道
我看了官方struts2.1.6的文档

没见着说include可以正则匹配呀

我是看struts2.1.6源码的时候发现的。
可以这样写:<include file="actions_*.xml"/>
参见XmlConfigurationProvider的源代码

刚才试了一下,好像只有在classpath下的xml才能匹配到。。。而且文档上居然没提到说可以匹配 靠

如果不在classpath下面,在前面加/WEB-INF/actions_*.xml路径貌似也可以的


不过大型项目每个模块都有/模块名称/WEB-INF/classes/struts.xml的,觉得还是自己重写的好
不知道struts2是否支持配置文件修改过后自动装载的机制,如果没有还要定时去装载修改后的struts.xml文件
8 楼 smilebug 2009-03-19  
wangneng_001 写道
myyate 写道
wangneng_001 写道
我看了官方struts2.1.6的文档

没见着说include可以正则匹配呀

我是看struts2.1.6源码的时候发现的。
可以这样写:<include file="actions_*.xml"/>
参见XmlConfigurationProvider的源代码

刚才试了一下,好像只有在classpath下的xml才能匹配到。。。而且文档上居然没提到说可以匹配 靠

如果不在classpath下面,在前面加/WEB-INF/actions_*.xml路径貌似也可以的
7 楼 wangneng_001 2009-02-27  
myyate 写道
wangneng_001 写道
我看了官方struts2.1.6的文档

没见着说include可以正则匹配呀

我是看struts2.1.6源码的时候发现的。
可以这样写:<include file="actions_*.xml"/>
参见XmlConfigurationProvider的源代码

刚才试了一下,好像只有在classpath下的xml才能匹配到。。。而且文档上居然没提到说可以匹配 靠
6 楼 myyate 2009-02-27  
wangneng_001 写道
我看了官方struts2.1.6的文档

没见着说include可以正则匹配呀

我是看struts2.1.6源码的时候发现的。
可以这样写:<include file="actions_*.xml"/>
参见XmlConfigurationProvider的源代码
5 楼 wangneng_001 2009-02-26  
我看了官方struts2.1.6的文档

没见着说include可以正则匹配呀
4 楼 lisg 2009-02-26  
struts.properties

struts.configuration.xml.reload = true
3 楼 wangneng_001 2009-02-25  
myyate

那个include正则杂写的??
2 楼 atian25 2009-02-25  
<init-param>
            <param-name>config </param-name>
            <param-value>struts-default.xml,struts-plugin.xml,/WEB-INF/struts.xml </param-value>
        </init-param>


这个我这边测试不通过,需要把/WEB-INF/struts.xml修改为../struts.xml才能通过
1 楼 myyate 2009-02-25  
struts2 1.2.*以上支持include正则配置,你这样又是轮子了

相关推荐

    struts2配置文件加载顺序

    5. **包配置**:最后,加载`struts.xml`中引用或直接存在的各个包配置文件。包可以嵌套,因此会先加载父包,然后是子包。每个包中的配置会覆盖父包中的同名配置。 6. **Action配置覆盖**:如果同一个Action在不同的...

    struts核心jar包及xml配置文件

    本压缩包包含了Struts2的核心库jar文件以及相关的XML配置文件,这些都是开发Struts2应用的基础组件。 **1. Struts2核心jar包** Struts2的核心jar包是实现框架功能的关键,主要包括以下几个部分: - **struts2-core...

    struts2的struts.properties配置文件详解

    如果设置为true,Struts2将加载XML配置文件;否则,不加载。 5. struts.continuations.package:这是一个包名,包含使用Rife continuations的actions。 6. struts.custom.i18n.resources:这是一个附加的国际化...

    struts2配置文件改变位置问题

    在描述的问题中,开发者尝试将`struts.xml`文件移动到项目中的不同位置,但发现即使指定了新的路径,Struts2也无法正确加载该配置文件。这是因为Struts2框架在启动时,并不直接根据应用程序的根目录来寻找配置文件,...

    struts2的struts.xml文件的元素结构

    在Struts2中,`struts.xml`文件是核心配置文件,用于定义应用的行为、动作映射、结果类型、拦截器等。这篇博文主要探讨了`struts.xml`文件的元素结构,下面我们将详细解析这些关键元素。 首先,`struts.xml`文件...

    ·Struts2配置文件介绍 超级详细

    在Struts2框架中,有多个重要的配置文件用于控制应用的行为与结构,其中最核心的是`struts.xml`文件。此外还包括`web.xml`、`struts.properties`、`struts-default.xml`等。 - **web.xml**:它是Web应用的部署描述...

    struts2配置文件

    在Struts2中,配置文件主要分为两个部分:`struts-default.xml`和用户自定义的配置文件,如`struts.xml`或`struts-config.xml`。这些XML文件定义了Action、结果类型、拦截器和包等元素,从而控制应用程序的行为。 *...

    struts2核心配置文件

    在Struts2框架中,有两个核心配置文件特别重要:`struts.xml` 和 `struts.properties`。这两个文件共同决定了Struts2框架的行为特征和应用的运行逻辑。 #### 二、struts.xml 文件详解 `struts.xml` 文件是Struts2的...

    struts.xml文件详解.doc

    Struts.xml文件是Apache Struts 2框架的核心配置文件,它用于定义应用程序的行为、Action映射、结果页面、拦截器等关键组件。在深入讲解struts.xml之前,我们先来了解与之相关的struts.properties文件。 struts....

    struts2 配置文件

    Struts2主要依赖于两种基于XML的配置文件:`web.xml` 和 `struts-config.xml`(通常命名为 `struts.xml`)。本文将详细介绍这两种配置文件的作用及配置方式。 #### 二、web.xml 文件 **web.xml** 是一个Web应用程序...

    Struts2属性文件详解

    该属性指定了Struts 2框架默认加载的配置文件,默认值为`struts-default.xml,struts-plugin.xml,struts.xml`。这意味着Struts 2框架默认加载`struts.xml`文件。如果需要指定默认加载多个配置文件,多个文件名间以...

    struts2配置文件详细说明

    - `struts.configuration.xml.reload`设定是否在配置文件更改后自动重载,`true`适合开发环境。 3. **开发模式与调试**: - `struts.devMode`设置为`true`,启动开发模式,提供详细的错误信息和更友好的调试体验...

    struts2 为应用指定多个配置文件.rar

    7. **工具支持**:标签中的“工具”可能指的是使用Eclipse或MyEclipse等IDE的插件来辅助Struts2的开发,这些工具可以帮助自动完成配置、验证配置文件的正确性,并提供代码提示。 通过以上方式,Struts2允许开发者...

    struts2+hibenate+spring的配置文件

    接下来,`struts.xml`是Struts2的核心配置文件,它定义了Action类、结果页面、拦截器等。在这个文件中,你可以配置每个HTTP请求对应的具体Action,Action如何映射到方法,以及执行完方法后跳转到哪个JSP或Freemarker...

    将struts2和spring的配置文件拆分

    2. 接下来,根据组件的类型,创建多个XML配置文件。在本例中,我们拆分为`applicationContext-dao.xml`、`applicationContext-service.xml`和`applicationContext-action.xml`。 - `applicationContext-dao.xml`...

    Struts2的DTD配置文件struts-2.3.dtd

    在Struts2中,`struts.xml`是核心配置文件,它定义了应用的行为、动作、结果和其他组件。为了在Eclipse这样的集成开发环境中获得代码提示和自动完成,我们需要引入DTD(文档类型定义)文件,例如`struts-2.3.dtd`。 ...

    struts1多模块多配置文件

    本文将详细介绍如何在Struts1框架中实现多模块开发,并通过多配置文件来管理不同模块的配置信息。 #### 二、多模块架构的优势 1. **清晰的代码结构**:每个模块都有明确的功能边界,便于理解和维护。 2. **易于扩展...

    struts2的加载

    Web.xml配置Struts2 Filter 在`web.xml`中,我们需要注册一个名为`StrutsPrepareAndExecuteFilter`的过滤器,该过滤器负责初始化Struts2框架并处理所有的HTTP请求。以下是典型的配置代码: ```xml ...

    struts2的配置文件

    Struts2通过不同的配置文件来组织这些设置,主要包括`struts.xml`、`struts-default.xml`、`struts-plugin.xml`以及`struts.properties`等。 #### 二、Struts2配置文件的作用及加载顺序 1. **加载顺序**: - `...

    struts2配置文件详解

    3. **`struts.xml`**:位于Web应用中,是Struts2的核心配置文件,用于配置Action、拦截器等。 4. **`struts.properties`**:同样位于Web应用中,用于指定一些高级配置项。 5. **`web.xml`**:Web应用的部署描述符,...

Global site tag (gtag.js) - Google Analytics