Struts1.x是目前在项目中应用的较为广泛的框架,它的多模块功能在团队开发时很有用,但在很多书上讲的并不多,Struts自身的文档也说的比较简单,用起来好像比较简单,但有时候经常会造成一些问题,对初次接触多模块的人,这些问题会造成一些不必要的困惑。现将采用Struts的多模块时应注意的事项总结一下,在此和大家共享:
(1)在web.xml文件中添加模块的配置文件时,一定要保留默认的配置文件,即web.xml文件中至少保持两个 <init-param>标记,一个用于定义默认的struts-config.xml,一个用于定义你需要的模块配置文件。如果只定义了模块使用的配置文件,而删除了默认的配置文件,struts将不能正常的工作。
(2)在模块的配置文件中定义action、formbean的方法和不采用模块时的配置方法是一样的;但在定义forward时,一定不要忘了设置contextRelative="true",否则在跳转时struts会在forward要转向的网页前面加上模块的前缀作为在WEB程序中的查找路径,这样就会在转发时出现找不到JSP页面的错误。
(3)模块中的JSP页面如果使用了<html:form>标记来获得formbean中的数据,一定要注意,这种JSP页面不能直接作为直接的链接让用户点击,而是应该在该模块的action中,使用非重定向forward转入,否则该页面中的<html:form>会导致错误。另外,<html:form>标记的action属性要直接设置为该模块中对应的action的path属性,不需要加上模块的前缀。鉴于这些原因,一般都会把模块中的JSP页面放入/WEB-INF目录中的某个文件夹,比如/WEB-INF/jsps目录,由于/WEB-INF目录不能直接被用户访问,这样,就会阻止用户无意中访问了对应的JSP文件而造成的错误。
从以上的总结可以看出,利用struts多模块编程时,比较好的策略是,将所有struts管理的页面都放入/WEB-INF文件夹的某个目录中,最好在这个目录下为每一个模块建立一个见名知义的文件夹,然后将这些JSP页面按照其所属的模块,放入这些文件夹,而访问这些JSP页面都要通过对应模块中的action进行转发,这实际上也是MVC所要求的一种设计和运行模式。另外,不要由一个模块的action直接转发到另一个模块的action负责管理的页面,这样即破坏了MVC的分工原则,又会带来多模块中页面的路径和formbean的问题。如果需要模块之间的页面转移,可以利用重定向forward直接转发到另一个模块的action,再由这个action决定将用户转发到本模块中的具体的JSP页面。这样即保持了MVC的分工原则,又保护了多模块中使用formbean的JSP页面。最后,建议在多模块中,最好采用DispatchAction,这样action的代码比较清晰明确,易于维护。
附件是一个样本war文件,其中包含了源代码,用到了LazyFormBean.
分享到:
相关推荐
- **Struts2.x** 配置文件较少,主要为struts.xml,支持注解配置,减少XML配置的繁琐。 8. **插件与扩展性**: - **Struts1.x** 插件较少,扩展性相对较弱。 - **Struts2.x** 有丰富的插件系统,如Ajax、...
在Struts1.x中,Action是核心组件之一,它必须继承自org.apache.struts.action.Action类,并且需要覆盖execute方法。Action对象由框架创建和管理,每一个HTTP请求都对应一个Action实例。然而,在Struts2.x中,Action...
2. **Action类**:在Struts1.x中,每个HTTP请求都会映射到一个特定的Action类实例。Action类是Controller的实现,它处理用户请求,执行相应的业务逻辑,并返回一个表示结果的ActionForward对象。 3. **配置文件**:...
- **手动搭建**:在 MyEclipse 中手动添加 Struts1.x 的相关依赖库,配置 web.xml 文件,并创建 struts-config.xml 文件来定义 Action 映射等配置。 - **IDE 工具支持**:利用 MyEclipse 或 Eclipse 等集成开发环境 ...
在Struts1.x中,Model代表业务逻辑,View负责数据展示,Controller处理用户请求并协调Model和View。 2. **Action类**:每个HTTP请求都对应一个Action类,这是Struts1.x的核心组件。Action类处理用户请求,执行相应...
2. **Action类**:在Struts 1.x中,Action 类是处理用户请求的核心组件。每个Action对应一个特定的用户动作,它接收HTTP请求,执行相应的业务逻辑,并通过ActionForward指定视图(JSP页面)进行响应。 3. **配置...
在Struts1.x中实现多文件上传,主要涉及以下几个核心概念和步骤: 1. **表单设计**:首先,你需要创建一个HTML表单,包含`<input type="file">`字段,允许用户选择多个文件。每个文件输入字段应设置不同的name属性...
1. **安装和配置**:了解如何在项目中集成Struts1.x框架,配置web.xml和struts-config.xml文件。 2. **Action和ActionForm**:深入理解这两者的作用,如何编写和使用它们。 3. **视图渲染**:熟悉JSP页面和Struts...
Struts1.x是一个经典的Java Web框架,用于构建MVC(模型-视图-控制器)架构的应用程序。在国际化(i18n)方面,Struts1提供了强大的支持,使得应用程序可以适应不同语言和地区的用户需求。以下是关于Struts1.x国际化...
- Action是Struts1.x中处理用户请求的类。在这个例子中,我们创建一个LoginAction,它同样继承自Action基类。在execute方法中,我们检查用户名是否为"struts",如果是,则返回"loginSuccess",否则返回"login...
在Struts1.x中,实现I18N(Internationalization)主要是通过资源文件(如*.properties)来管理不同语言的文本。这些文件按照语言和地区进行组织,例如,`message_en.properties`用于英文,`message_zh_...
在Struts1.x中,ActionServlet作为控制器,ActionForm对象作为模型和控制器之间的数据载体,而JSP页面作为视图。 2. **配置文件**: - **struts-config.xml**:这是Struts1.x的核心配置文件,定义了ActionMapping...
在Struts1.x中,实现文件上传功能是一个常见的需求,特别是在处理用户提交的表单时需要包含多个文件。下面我们将详细介绍如何使用Struts1.x来实现多个文件的上传。 首先,我们需要在HTML表单中添加`...
在Struts 1.x中,如果需要在表单中处理文件上传,这个库是必不可少的。 搭建Struts 1.x环境的步骤通常包括以下几点: 1. 将这些jar包添加到你的项目类路径中。 2. 创建`struts-config.xml`配置文件,定义Action、...
学习Struts1.x时,你需要熟悉上述概念并掌握它们之间的交互方式。通过阅读提供的"Struts中文帮助.CHM"文件,你可以深入理解每个组件的工作原理,学习如何配置struts-config.xml文件,以及如何编写Action、ActionForm...
**国际化资源文件**:为了支持多语言环境,可以通过在`struts.properties`文件中配置`Struts.custom.i18n.resources`属性来指定资源文件。资源文件可以分为全局资源文件、包级别的资源文件和类级别的资源文件。当...
本教程将详细介绍Struts 1.x的基本原理和使用方法,让读者可以快速入门并提高对Struts 1.x框架的应用能力。同时,教程中也会涉及与Struts 2.x的比较,帮助开发者理解两个版本之间的相似之处和差异。 ### Struts 1.x...
freemarker与struts 1.x 结合,生成html 在http://blog.csdn.net/chen1255 的web中有详细描述关于freemarker与struts1.x的结合
- DispatchAction:Struts1.x中的一种扩展Action,可以处理多个请求方法,每个方法对应一个特定的操作。 - ActionForm:用户的输入数据会被封装到ActionForm对象中,然后传递给Action处理。 - Action Mapping:...
Struts1.x_action 是一个与Apache Struts 1.x框架相关的资源包,它包含了用于构建基于Java的企业级Web...不过,需要注意的是,Struts1.x框架现在已被认为过时,最新的项目推荐使用更新的框架如Spring MVC或Struts2。