- 一、 配置web.xml 文档
- 添加模块moduleOne、moduleTwo
-
- <init-param>
- <param-name>config</param-name>
- <param-value>/WEB-INF/struts-config.xml</param-value>
- </init-param>
-
-
- <init-param>
- <param-name>config/moduleOne</param-name>
- <param-value>/WEB-INF/moduleOne/struts-moduleOne.xml</param-value>
- </init-param>
-
-
- <init-param>
- <param-name>config/moduleTwo</param-name>
- <param-value>/WEB-INF/moduleTwo/struts-moduleTwo.xml</param-value>
- </init-param>
- 注:<param-name>格式必须这样写,<param-value>是指在WEB-INF目录下新建moduleOne目录再创建struts-moduleOne.xml,struts-moduleOne.xml格式与struts-config.xml相同。在此同时在WebRoot目录下新建moduleOne和moduleTwo的文件夹,用于区分模块和存放页面文件
-
- 二、 配置struts-config.xml
- <struts-config>
- <data-sources />
- <form-beans type="org.apache.struts.webapp.CustomFormBean" />
- <global-exceptions />
- <global-forwards
- type="org.apache.struts.webapp.CustomActionForward" />
- <action-mappings
- type="org.apache.struts.webapp.CustomActionMapping">
- <action path="/main" forward="/index.jsp" />
- </action-mappings>
- <message-resources parameter="com.accp.struts.ApplicationResources" />
- </struts-config>注意: type 这三个类是从何而来的呢??答:自定义的
- 所以在配置 struts-config.xml之前我们应创建它们,当然每个类都必须extenx 相应的父类,如下:
- CustomFormBean extenx FormBeanConfig
- CustomActionForward extenx ActionForward
- CustomActionMapping extenx ActionMapping
- 这些类里面可以什么都不写,当然比较好点规范就是在里内添加一个属性,如下:
- private String example =””;
- 相应的get()set()
-
- 三、 配置子模块
- 经过上面的配置基本已完成,那么我们现在来配置moduleOne子模块信息,添加action、actionFrom、jsp。
- 注意:action 必须extends DispatchAction, jsp页面应放在WebRoot目录下moduleOne
- struts-moduleOne.xml如下:
- <struts-config>
- <data-sources />
- <form-beans>
- <form-bean name="moduleOneForm"
- type="com.accp.struts.form.ModuleOneForm">
- </form-bean>
- </form-beans>
- <global-exceptions />
- <global-forwards>
-
- <forward module="/moduleTwo" redirect="true" name="succeed" path="/displayUser.jsp"/>
- </global-forwards>
- <action-mappings>
-
- <action path="/reg" forward="/userRegist.jsp"/>
- <action path="/regist" name="moduleOneForm" scope="session" parameter="user"
- type="com.accp.struts.action.ModuleOneAction">
- </action>
- </action-mappings>
- <message-resources parameter="com.accp.struts.ApplicationResources" />
- </struts-config>
-
- index.jsp 如下:
- <html:link module="/moduleOne" action="/reg.do">到moduleOne的用户注册</html:link>
- 注意:module属性,是指定某个模块,对应的就在某个模块配置<action/>
-
- userRegist.jsp 如下:
- <html:form action="/regist?user=addUser">
- name : <html:text property="name"/><br/>
- sex : <html:text property="sex"/><br/>
- age : <html:text property="age"/><br/><br/>
- <html:submit value="Submit"/><html:reset value="Reset"/>
- </html:form>
- 注意:user是moduleOne.xml <action parameter="user"……/>因为我们用到了DispatchAction,addUser是指action里的某个方法.
-
- ModuleOneAction.java如下:
- public class ModuleOneAction extends DispatchAction {
- public ActionForward addUser(ActionMapping mapping, ActionForm form,HttpServletRequest request, HttpServletResponse response) {
- ModuleOneForm moduleOneForm = (ModuleOneForm) form;
- System.out.println("name :"+ moduleOneForm.getName());
- System.out.println("age :" + moduleOneForm.getAge());
- System.out.println("sex :" + moduleOneForm.getSex());
- return mapping.findForward("succeed");}}
-
- displayUser.jsp
- <body>
- name:${moduleOneForm.name}<br/>
- age:${moduleOneForm.age}<br/>
- sex:${moduleOneForm.sex}<br/>
- <html:link action="/main.do">回到主模块</html:link>
- </body>
- 注意:displayUser.jsp 位于moduleTwo目录,<html:link> 没指定module 所以默认从主模块的struts-config.xml寻找配对的<action>
-
- 四、发布测试…….实现主模块跳转到moduleOne子模块然后导航到另一moduleTwo子模块再导航到主模块
- 阅读时请留意注意部分
阅读时请留意注意部分
在网上看了很多这方面的资料.. 但是. 发现都是很肤浅的一个介绍.
所以在下刚刚做完的一个项目就是用一个多模块的所有跟大家一起分享一下..
大家配置好首先看看他的跳转关系.. 就会很明白他们是怎么一样工作的了
附件清晰版本
分享到:
相关推荐
Struts DispatchAction是一个在Struts框架中非常重要的概念,它是一种控制器组件,用于处理来自用户的...然而,随着技术的发展,如Struts2的出现,开发者可以选择更现代和模块化的解决方案来代替传统的DispatchAction。
在本教程中,我们将深入探讨如何利用Struts的标签库和DispatchAction来实现数据的增删改查操作,这对于初学者来说是一个非常实用的学习主题。 首先,`DispatchAction`是Struts中的一个特殊Action类,它允许我们根据...
在Struts框架中,`DispatchAction`是一个关键组件,它扮演着控制器的角色,负责处理用户请求并调用相应的业务逻辑。在本篇文章中,我们将深入探讨`DispatchAction`的工作原理、优点以及如何在实际项目中使用。 `...
- **多模块**:在一个项目中可以有多个独立的功能模块,每个模块都有自己的`struts-config.xml`配置文件。 - **模块间的通信**:通过共享数据源或使用Struts提供的机制进行跨模块的数据传递。 #### 六、总结 ...
2. **15_struts_dispatchaction_usermgr**: DispatchAction 是 Struts 提供的一个特殊Action,它可以将请求分发到多个方法,而不是只调用一个处理方法。Usermgr 可能是用户管理模块,展示如何使用 DispatchAction ...
在Struts中,DynaActionForm和DispatchAction被用来处理动态表单和动作映射,以减少Action和ActionForm的复杂性。同时,Tile布局框架用于创建可重用的页面组件,提高开发效率。此外,自定义标签可以用来处理特定的...
`struts_dispatchaction_usermgr`可能是一个示例,展示了如何使用DispatchAction来处理多个子操作。DispatchAction允许在一个Action类中定义多个方法,每个方法对应不同的请求路径,提高了代码复用性。 6. **...
处理子应用模块的工具类,提供获取子模块配置的方法。 #### 9. Globals 包含一些全局常量,如错误信息、消息资源等。 ### 三、视图组件 #### 1. ActionForm 承载用户输入的数据,与`Action`配合处理业务逻辑。`...
Struts 2是Struts的升级版,引入了更多特性,如拦截器(Interceptor)、更加灵活的配置方式以及对其他框架如Spring、Hibernate的更好支持。 **10. Struts与Spring的整合** 通过整合Spring,可以利用Spring的依赖...
相比于Struts1,Struts2在架构上更加清晰,组件更加模块化,支持更丰富的插件体系,以及更好的国际化支持。 #### 二、Struts1与Struts2的MVC架构对比 **1. Struts1的MVC实现** Struts1的核心组件包括: - **...
- **应用模块**:支持将应用划分为多个模块,便于管理和维护。 - **JSP保护**:通过将JSP页面放在`WEB-INF`目录下,可以防止外部直接访问,提高安全性。 - **PrebuiltAction类**:提供了一些常用的Action基类,如`...
- **应用模块(Application Modules)**:将应用程序划分为多个模块,每个模块可以有自己的配置文件和资源,便于管理和维护。 - **JSP页面保护**:通过将JSP页面放置在`WEB-INF`目录下,防止直接访问,增加安全性。 ...
- **解决Action冗余**:当一个模块中有多个操作时,使用单独的Action类会导致类的数量过多,不利于管理。DispatchAction可以帮助我们集中处理这些操作。 - **配置文件**:在struts-config.xml中,可以配置一个...
Struts支持在一个Web应用中配置多个模块,每个模块都可以有自己的配置文件,便于管理复杂的Web应用程序。 #### 四、Struts组件 ##### 1.ActionServlet类 Struts的核心组件,负责接收HTTP请求、解析请求、调用...
**DispatchAction类**: DispatchAction使得处理多个业务逻辑更加灵活。例如,我们可以创建一个删除已点菜品的方法: ```java public ActionForward doDelPrepareVegetables(ActionMapping arg0, ActionForm arg1, ...
在Struts框架中,核心组件包括Action、Form Bean、Action Mapping、Controller Servlet(DispatchAction)以及JSP视图。以下是这些组件的具体解释: 1. **Action**:Action是业务逻辑处理的中心,负责接收请求,...
DispatchAction是Struts提供的一种扩展机制,它允许我们在一个Action类中定义多个处理不同请求的方法,提高了代码的组织性和复用性。通过DispatchAction,我们可以减少Action Bean的数量,提升系统的可维护性。使用...