`
betafox
  • 浏览: 146884 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts的多模块配置,真滴很扯淡?

阅读更多

        首先声明,struts1的多模块配置很好很强大很有用,对于大型的web项目来说多模块化是必不可少的,结合合理的分层分包可以实现基本的可组装的业务。扯淡的是其配置方式,完全不人性化,感觉作者是火星人,举个例子:既然模块已经分成单个配置文件了,干嘛还要在web.xml中指定模块名??这不是人为增加了配置环节吗?这个问题在java web开发中大量存在:学院派气氛的思维习惯作祟,今天只是揪住struts1这个倒霉蛋罢了。

        觉得不爽还是自己动手吧:扩展struts控制器,自动加载某个目录下所有的***_config.xml,自动将***作为模块名。

 

       

package -------------;

import org.apache.struts.Globals;
import org.apache.struts.action.ActionServlet;
import org.apache.struts.config.ModuleConfig;

import javax.servlet.ServletException;
import javax.servlet.UnavailableException;
import java.io.File;


/**
 * <p> 描述: 强化的struts控制器</p>
 * 1、强化配置读取,支持从类路径某个目录读取配置,自动按文件名映射模块
 * 2、以struts-config为前缀的文件统一映射到默认路径
 * <p/>
 * <p> Create Date: 2009-4-15  18:34:30 <p>
 *
 * @author betafox
 * @version 1.0
 */

public class StrutsServlet extends ActionServlet {
    public void init() throws ServletException {
        try {
            initInternal();
            initOther();
            initServlet();

            getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this);
            initModuleConfigFactory();
            // Initialize modules as needed

            //===============================================

            File dir = new File(StrutsServlet.class.getResource("/conf/struts1/").toURI());
            File[] xmls = dir.listFiles();
            for (int i = 0; i < xmls.length; i++) {
                String name = xmls[i].getName();
                String prefix = "/" + name.toLowerCase().replace(".xml", "");

                if (prefix.startsWith("/struts-config"))
                    prefix = "";//默认模块
                
                ModuleConfig moduleConfig = initModuleConfig
                        (prefix, "/conf/struts1/" + name);
                
                initModuleMessageResources(moduleConfig);
                initModuleDataSources(moduleConfig);
                initModulePlugIns(moduleConfig);
                moduleConfig.freeze();
            }
            //==============================================

            this.initModulePrefixes(this.getServletContext());

            this.destroyConfigDigester();
        } catch (UnavailableException ex) {
            throw ex;
        } catch (Throwable t) {
            log.error("Unable to initialize Struts ActionServlet due to an "
                    + "unexpected exception or error thrown, so marking the "
                    + "servlet as unavailable.  Most likely, this is due to an "
                    + "incorrect or missing library dependency.", t);
            throw new UnavailableException(t.getMessage());
        }
    }
}

 

实现中发现struts1的可扩展性实在是不敢恭维,找不到ActionServlet 的init扩展点,只有重写一下,严重的侵入了...!

分享到:
评论

相关推荐

    struts1多模块多配置文件

    ### Struts1多模块多配置文件的开发流程详解 #### 一、引言 在大型项目的开发过程中,为了更好地组织代码结构,提高系统的可维护性和扩展性,通常会采用多模块的设计模式。对于使用Struts1框架进行开发的项目而言,...

    struts多模块配制

    在Struts多模块配置中,每个模块代表一个独立的功能或者业务领域,它们之间通过定义良好的接口进行通信,降低了模块间的耦合度。以下是一些关键的知识点: 1. **模块化设计**:模块化是软件工程中的最佳实践,通过...

    struts2 模块包含

    1. **Action配置**:在Struts2的配置文件(如struts.xml)中,每个Action元素代表一个模块。Action元素包含了与该模块相关的配置信息,如类名、结果页面、拦截器等。 2. **Interceptor拦截器**:拦截器是Struts2...

    struts多模块.pdf

    ### Struts多模块开发概述与实践 #### 一、引言 在当今的软件开发领域,多模块开发和软件扩展性已成为评估一个框架优劣的关键指标。尤其对于框架型软件而言,其是否支持多模块开发、是否具备良好的扩展性及与其他...

    struts2 Https 配置

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...

    Java进阶Struts多模块的技巧.rar

    通过在web.xml中配置多个Struts2的FilterDispatcher,我们可以将不同模块的请求分发到相应的模块配置文件,实现多模块的隔离。 接着,我们探讨如何创建Struts多模块项目。通常,项目结构可以分为以下几个部分: 1....

    struts 2.0 详细配置

    Struts 2.0 是一个功能强大的框架,为开发者提供了很多便利的功能,如自动类型转换、国际化支持等。通过上述介绍,我们可以了解到 Struts 2.0 的核心概念及其工作原理。掌握了这些基础知识后,开发者可以更轻松地...

    Struts多模块[定义].pdf

    1. **多模块Struts应用配置**:每个模块需要一个独立的配置文件,文件名通常以`struts-config-模块名.xml`的形式表示。默认模块的配置文件通常是`struts-config.xml`,其他模块的配置文件则根据模块名进行命名。每个...

    struts2核心配置文件

    `struts.xml` 主要关注于Action的映射和Result的定义,而 `struts.properties` 更多地关注于框架本身的配置和行为。合理地配置这两个文件,可以使Struts2应用程序更加灵活和高效。开发者可以根据项目的具体需求,...

    Struts2零配置

    在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...

    多个struts配置文件使用

    在Struts框架中,可以利用多个配置文件来组织和管理应用程序的不同部分,这不仅有助于保持代码的整洁,还能提高开发效率。以下是对“多个struts配置文件使用”这一主题的详细解析。 ### 一、Struts框架概述 Struts...

    struts多模块

    本文将详细介绍如何在Struts框架下实现多模块配置。 在Struts框架中,多模块的实现主要依赖于Action和配置文件的划分。每个模块可以视为一个独立的功能单元,拥有自己的Action类和对应的配置文件。下面我们将深入...

    Struts2.5.2的配置及问题解决

    本文将详细介绍Struts2.5.2的配置过程以及可能遇到的问题和解决方案。 首先,配置Struts2.5.2需要从官方站点下载所需的jar包。在http://struts.apache.org/download.cgi#struts252上,你可以找到两个选项:1是指...

    struts2 配置dtd 自动提示

    在配置Struts2时,通常会使用一个名为`struts.xml`的配置文件,该文件定义了应用程序的行为和组件。为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常...

    struts核心配置文件详解

    Struts应用的配置 多应用模块的配置 Struts配置文件 多应用模块的划分有助于应用的并行开发,提高效率

    Struts2的配置文件的详细说明

    Struts2的配置文件不仅限于上述内容,还涉及更多细节,比如Interceptor配置、Result类型的定义、动态方法调用、通配符Action、类型转换器、异常处理策略等。每个部分都是为了提高应用程序的灵活性和可维护性,让...

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

    "struts2 为应用指定多个配置文件"的主题意味着我们将探讨如何在Struts2框架中使用多个配置文件来增强灵活性和模块化。 首先,Struts2的默认配置文件是`struts-default.xml`和`struts-plugin.xml`,这两个文件位于`...

    struts的模块话开发

    模块化开发是Struts中的一个重要概念,它允许我们将大型应用分解为多个独立的、可重用的组件,以便于管理和维护。以下是对Struts模块化开发的详细说明。 在Struts框架中,模块通常指的是ActionServlet配置中的 `...

    Struts2配置详解

    Struts2支持将配置文件进行模块化的管理,这意味着开发者可以将不同的功能或组件的配置放在单独的XML文件中,并通过`&lt;include&gt;`标签引用这些文件。这种方式有助于提高代码的可维护性和可读性,使得大型项目的配置...

    Struts 之旅 - 配置多应用模块

    在本文中,我们将深入探讨如何在 Struts 1.3 版本中配置多应用模块,这对于大型项目尤其重要,因为它允许我们把不同的功能模块分离到单独的应用中,提高代码的可维护性和可扩展性。 首先,让我们了解 Struts 框架的...

Global site tag (gtag.js) - Google Analytics