//接口
interface ModuleConfig{
//一些getter setter find方法 对DataSource MessageResource ActionMapping等资源文件进行操作
}
//就是 具体产品类
class ModuleConfigImpl implements ModuleConfig{
//用于产生一个默认的ModuleConfig对象
public ModuleConfigImpl(String prefix){
//初始化默认的资源类型 大部分为null,一些指定了基本类型
}
/**Struts_config.xml中的<action-mapping>配置项*/
protected HashMap forwards;
protected HashMap messageResources;
//省略其他的一些属性
}
//工厂类
abstract class ModuleConfigFactory{
//创建产品
abstract ModuleConfig createModuleConfig(String prefix);
//获得工厂类对象
ModuleConfigFactory getModuleConfigFactory(String prefix){
//返回DefaultModuleConfigFactory对象
return new DefaultModuleConfigFactory(prefix);
}
}
//工厂类的默认实现
class DefaultModuleConfigFactory extends ModuleConfigFactory{
//实现抽象方法
ModuleConfig createModuleConfig(String prefix){
return new ModuleConfigImpl(prefix);
}
}
/**调用方法ActionServlet类中的init()方法:*/
//实例工厂类
ModuleConfigFactory moduleConfigFactory=ModuleConfigFactory.createModuleConfigFactory();
//获得产品
ModuleConfig moduleConfig=oduleConfigFactory.createModuleConfig(prefix);
Sturts使用工厂类创造了ModuleConfig对象,其实还是使用了面向接口编程的方法,利用接口来动态的指定其子类,便于扩展
分享到:
相关推荐
在初始化过程中,`configDigester`使用SAX解析技术解析这些配置文件,生成ModuleConfig对象。每个ModuleConfig对象封装了一个模块的配置信息,包括Action映射、数据源、消息资源等。配置文件中的`...
这个文件通常包含了常量定义、结构体、枚举类型、函数原型和其他声明,这些内容都是为了帮助开发人员在项目中使用`ch9121`网络配置协议。在`ModuleConfig.h`中,我们可能会找到如下内容: 1. **常量定义**:定义与`...
Struts 1.3.9是在2008年发布的,它提供了许多增强和修复了之前版本中的问题,以提高框架的稳定性和安全性。 首先,我们来看看`LICENSE.txt`和`NOTICE.txt`这两个文件。`LICENSE.txt`通常包含了软件的许可协议信息,...
在本压缩包"struts-1.2.9-src"中,包含的是Struts 1.2.9版本的源代码,这对于开发者深入理解Struts的工作原理、调试问题或者进行二次开发非常有帮助。 Struts框架的核心组件包括Action、ActionForm、ActionServlet...
4. `initModuleConfig()`方法将`struts-config.xml`中的配置项初始化后放入`moduleConfig`对象,以提高访问速度,因为`moduleConfig`存储在内存中,读取速度远超硬盘。 5. 插件初始化,Struts1支持插件机制,增强了...
通过研究这些源码,开发者可以更好地理解MVC模式在Struts中的实现,以及它如何与Servlet容器(如Tomcat)协作。同时,这也为自定义行为、优化性能或者解决已知问题提供了可能。例如,你可以查看`RequestProcessor`...
在`web.xml`中声明这些标签库,以便在JSP页面中使用。 **struts-config.xml配置** `struts-config.xml`是Struts应用的主要配置文件,它定义了Action、ActionForm、Forward等关键组件。 1. **配置ActionForm**: `...
7. **FastHashMap**: FastHashMap是Struts中一个优化过的哈希映射实现,比Java内置的HashMap更快。它用于存储和查找配置信息、ActionMapping等,提供高效的键值对存储和检索。 通过阅读和理解Struts的源码,开发者...
Struts 1.1 是一个基于MVC(模型-视图-控制器)模式的Web应用程序框架,它在Model 2架构的...理解并掌握Struts 1.1的这些核心概念和工作机制,对于任何想要在Java Web开发中使用Struts框架的人来说,都是至关重要的。
6. **使用SessionFactory**:在Struts的动作类中,可以通过`ActionServlet`或`ServletActionContext`获取到SessionFactory,然后创建Session进行数据库操作。 7. **事务管理**:由于Struts是请求驱动的,因此需要...
在`struts-config.xml`中,Action配置使用`<action>`元素,它包含`path`属性定义请求路径,`type`属性指定Action类,`parameter`属性用于指定提交的请求参数,`forward`元素定义了Action执行成功后的转发路径。...
Struts1.x 版本是其早期版本,尽管现在已经被Struts2取代,但在许多遗留系统中仍然广泛使用。 入门学习Struts1.x,首先要做的就是下载Struts框架。你可以从Apache官方网站获取Struts的主页,并找到相应的下载页面。...
Struts 初始化 initInternal()方法: initOther()方法 initServlet()方法 getServletContext().setAttribute(Globals.ACTION_SERVLET_KEY, this) ModuleConfig moduleConfig = ...
1. 控制器进行初始化工作,读取配置文件,为不同的 Struts 模块初始化相应的 ModuleConfig 对象。 2. 控制器接收 Http 请求,并从 ActionConfig 中找出对应于该请求的 Action 子类,如果没有对应的 Action,控制器...
忙箱 我的仓库中共享模块/配置 共享的配置包括:
1. **修改web.xml**:在web.xml中,你需要为每个模块定义一个filter-mapping,每个mapping对应一个Struts的FilterDispatcher实例,并指定相应的`moduleConfig`参数,指向该模块的配置文件。 2. **创建自定义...
// using String patternsJsr310ModuleConfig config = Jsr310ModuleConfig . builder() .dateTimePattern( " yyyy-MM-dd HH:mm:ss " ) // default is yyyy-MM-dd HH:mm:ss .datePattern( " yyyy-MM-dd " ) // ...
这是一个头文件,通常在C或C++编程中使用,包含了模块配置的常量定义、函数原型和结构体声明等。在这个上下文中,它很可能是用来配置CH9121模块的参数,如波特率、校验位、数据位、停止位以及通信模式(如SPI、I2C或...
React Native 集成 CodePush 热更新 android 篇主要讲述了如何在 React Native 中集成 CodePush 热更新,以便更好地管理应用程序的更新和维护。下面将详细介绍 CodePush 的注册、集成和使用过程。 一、CodePush ...