首先声明,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框架进行开发的项目而言,...
在Struts多模块配置中,每个模块代表一个独立的功能或者业务领域,它们之间通过定义良好的接口进行通信,降低了模块间的耦合度。以下是一些关键的知识点: 1. **模块化设计**:模块化是软件工程中的最佳实践,通过...
1. **Action配置**:在Struts2的配置文件(如struts.xml)中,每个Action元素代表一个模块。Action元素包含了与该模块相关的配置信息,如类名、结果页面、拦截器等。 2. **Interceptor拦截器**:拦截器是Struts2...
### Struts多模块开发概述与实践 #### 一、引言 在当今的软件开发领域,多模块开发和软件扩展性已成为评估一个框架优劣的关键指标。尤其对于框架型软件而言,其是否支持多模块开发、是否具备良好的扩展性及与其他...
Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在当今网络安全日益重要的环境下,使用HTTPS协议来确保数据传输的安全性变得至关重要。Struts2支持HTTPS配置,可以...
通过在web.xml中配置多个Struts2的FilterDispatcher,我们可以将不同模块的请求分发到相应的模块配置文件,实现多模块的隔离。 接着,我们探讨如何创建Struts多模块项目。通常,项目结构可以分为以下几个部分: 1....
Struts 2.0 是一个功能强大的框架,为开发者提供了很多便利的功能,如自动类型转换、国际化支持等。通过上述介绍,我们可以了解到 Struts 2.0 的核心概念及其工作原理。掌握了这些基础知识后,开发者可以更轻松地...
1. **多模块Struts应用配置**:每个模块需要一个独立的配置文件,文件名通常以`struts-config-模块名.xml`的形式表示。默认模块的配置文件通常是`struts-config.xml`,其他模块的配置文件则根据模块名进行命名。每个...
`struts.xml` 主要关注于Action的映射和Result的定义,而 `struts.properties` 更多地关注于框架本身的配置和行为。合理地配置这两个文件,可以使Struts2应用程序更加灵活和高效。开发者可以根据项目的具体需求,...
在传统的Struts2应用中,开发者需要在多个XML文件中配置Action、结果页面、拦截器等,而“零配置”则是对这种繁琐配置的优化。 **一、Struts2框架基础** Struts2是一个基于MVC(Model-View-Controller)设计模式的...
在Struts框架中,可以利用多个配置文件来组织和管理应用程序的不同部分,这不仅有助于保持代码的整洁,还能提高开发效率。以下是对“多个struts配置文件使用”这一主题的详细解析。 ### 一、Struts框架概述 Struts...
本文将详细介绍如何在Struts框架下实现多模块配置。 在Struts框架中,多模块的实现主要依赖于Action和配置文件的划分。每个模块可以视为一个独立的功能单元,拥有自己的Action类和对应的配置文件。下面我们将深入...
本文将详细介绍Struts2.5.2的配置过程以及可能遇到的问题和解决方案。 首先,配置Struts2.5.2需要从官方站点下载所需的jar包。在http://struts.apache.org/download.cgi#struts252上,你可以找到两个选项:1是指...
在配置Struts2时,通常会使用一个名为`struts.xml`的配置文件,该文件定义了应用程序的行为和组件。为了在开发环境中获得更好的代码辅助和提示,我们需要使IDE(例如Eclipse)理解`struts.xml`文件的结构,这通常...
Struts应用的配置 多应用模块的配置 Struts配置文件 多应用模块的划分有助于应用的并行开发,提高效率
### Struts2基本配置使用手册:深入解析与实践 #### 搭建Struts2.0的开发与运行环境 **一、环境准备** 在深入探讨Struts2.0的基本配置之前,首先需要确保开发环境的正确搭建。Struts2.0作为Struts框架的升级版,...
Struts2的配置文件不仅限于上述内容,还涉及更多细节,比如Interceptor配置、Result类型的定义、动态方法调用、通配符Action、类型转换器、异常处理策略等。每个部分都是为了提高应用程序的灵活性和可维护性,让...
"struts2 为应用指定多个配置文件"的主题意味着我们将探讨如何在Struts2框架中使用多个配置文件来增强灵活性和模块化。 首先,Struts2的默认配置文件是`struts-default.xml`和`struts-plugin.xml`,这两个文件位于`...
模块化开发是Struts中的一个重要概念,它允许我们将大型应用分解为多个独立的、可重用的组件,以便于管理和维护。以下是对Struts模块化开发的详细说明。 在Struts框架中,模块通常指的是ActionServlet配置中的 `...
Struts2支持将配置文件进行模块化的管理,这意味着开发者可以将不同的功能或组件的配置放在单独的XML文件中,并通过`<include>`标签引用这些文件。这种方式有助于提高代码的可维护性和可读性,使得大型项目的配置...