应用模块-org.apache.struts.actions.SwitchAction

Struts 1.1的一个新特性是应用模块的概念。应用模块允许将单个Struts应用划分成几个模块,每个模块有自己的Struts配置文件, JSP页面,Action等等。这个新特性是为了解决大中型的开发队伍抱怨最多的一个问题,即为了更好的支持并行开发允许多个配置 文件而不是单个配置文件。

在用struts进行大型项目开发中,使用这种新特性将是非常好的选择。

下面我以一个非常简单的例子来展示这一功能。

通常在单模块进行开发时,文件的最一般的目录结构如下:
test/
..../web-inf/
.........../classes
.........../lib
.........../*.tld
.........../struts-config.xml
........... /web.xml
........... /validator-rules.xml
........... /validation.xml
........... ...
..../js
..../css
..../main1.jsp (本例使用的一个简单的jsp页面)
..../*.jsp
... ..


如果我们增加一个单独的模块如:test1,则文件的最一般的目录结构如下:
test/
..../test1 ****
........./main11.jsp (本例使用的一个简单的jsp页面)
........./*.jsp ****
..../web-inf/
.........../classes
.........../lib
.........../*.tld
.........../struts-config.xml
........... /struts-test1-config.xml *****
........... /web.xml
........... /validator-rules.xml
........... /validation.xml
........... ...
.../js
... /css
.../main1.jsp (本例使用的一个简单的jsp页面)
.../*.jsp
... ..
[旁边带有“****”的为新增的一些文件或目录]

以下为变更的几个xml配置文件:
1.struts-config.xml
在原来的action-mapping 增加switchAction 如:
....
....
<action-mappings>

<!-- Edit user registration -->

<action path="/login"
type="com.ifreeway.rms.v12.action.LoginAction"
scope="request">
<forward name="error" path="/main1.jsp"/>
</action>
<action path="/login1"
type="com.ifreeway.rms.v12.action.LoginAction1"
scope="request">
<forward name="error" path="/main1.jsp"/>
</action>
<action path="/switchdo" type="org.apache.struts.actions.SwitchAction"/> ****
</action-mappings>
....
....
[旁边带有“****”的为新特性中增加的配置]
2.struts-test1-config.xml
添加输入这个模块的actionmapping 如下:
....
....
<action-mappings>

<!-- Edit user registration -->

<action path="/login3"
type="com.ifreeway.rms.v12.action.LoginAction2"
scope="request">
<forward name="error" path="/main11.jsp"/>
</action>
</action-mappings>
....
....
3.web.xml
....
....
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>config/test1</param-name> *****
<param-value>/WEB-INF/struts-test1-config.xml</param-value> *****
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>3</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>3</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
....
....
[旁边带有“****”的为新特性中增加的配置]

大家可以看到在struts-test1-config.xml中增加了下面代码:
<action path="/switchdo" type="org.apache.struts.actions.SwitchAction"/>
因为在struts1.1中模块之间的导航要使用到org.apache.struts.actions.SwitchAction,如果你查看struts1.1的源代码可以发现
org.apache.struts.actions.SwitchAction需要两个参数:prefix 和 page 下面对这个参数逐一说明:
这两个参数均要以“/”开头
prefix 简单一点就是新增模块的名字,本例为:test1
page 就是在新的strutsconfig配置文件中要使用的actionmapping的名字 就本例为:login3.do

注意:如果是要使用却省模块的调用的话 prefix=空字符串

好了下面给出模块间转换的方法

启动Tomcat
http://localhost:8080/test/switchdo.do?prefix=/test1&page=/login3.do
则调用struts-test1-config.xml下的/login3.do
http://localhost:8080/test/switchdo.do?prefix=&page=/login1.do
则调用struts-config.xml下的/login1.do
http://localhost:8080/test/switchdo.do?prefix=&page=/login.do
则调用struts-config.xml下的/login.do

总的来说模块之间的转换要用到org.apache.struts.actions.SwitchAction,而它需要传递两个参数(一般出错的地方极有可能出在参数
的错误上,请注意了)

[注:在struts1.1正式版中已经支持多了配置文件]
如:<forward name="success" path="/switch.do?prefix=/xx/xxxx&page=/getCaseSummaryDetail.do" />
注释:&表示&符号。
<action path="/switch" type="org.apache.struts.actions.SwitchAction"/>
### 回答1: 在Java中,org.apache.struts.actions是Struts框架中的一个程序包,用于封装处理用户请求的核心类和方法。当程序中使用到这个包但实际项目中没有引入或找不到这个包时,就会出现"程序包org.apache.struts.actions不存在"的错误。 出现该错误可能有以下几个原因: 1. 缺少Struts框架依赖库:在使用Struts框架时,需要将Struts的依赖库文件引入到项目中,包括struts-core.jar等。如果项目中没有正确引入这些库文件,就会导致找不到org.apache.struts.actions包,从而报错。 解决方法:在项目的构建路径或依赖管理中,添加正确的Struts依赖库。 2. Struts版本不匹配:当程序使用的Struts版本和实际引入的Struts库文件的版本不匹配时,就会出现该错误。不同版本的Struts框架可能有差异,导致某些包或类的名称发生了变化。 解决方法:检查项目中使用的Struts版本,并确保引入的Struts库文件版本与之匹配。 3. 项目中没有包含Struts的配置文件:Struts框架需要通过配置文件来指定相关的Action类和处理请求的规则,如果项目中缺少这些配置文件,就无法找到对应的Action类,从而报错。 解决方法:检查项目中是否存在必要的Struts配置文件,如struts.xml。如果没有,请添加相应的配置文件。 总之,解决"程序包org.apache.struts.actions不存在"的错误,需要确保项目正确引入了Struts框架的依赖库,并检查配置文件是否完整和正确。 ### 回答2: Java中的“程序包org.apache.struts.actions不存在”是一个错误信息,意味着无法找到或加载所需的Struts包中的actions类。 Struts是一个流行的Java Web应用程序开发框架,用于构建基于MVC(模型-视图-控制器)设计模式的Web应用程序。它提供了许多功能和类,使开发人员能够更轻松地构建灵活和可扩展的Web应用程序。 当出现上述错误信息时,我们可以进行以下检查和解决方案: 1. 检查Struts库是否正确导入:首先,我们需要确认是否正确导入了Struts库或相关依赖项。在Java项目中,添加外部库时,需要将所需的JAR文件添加到项目的类路径中。 2. 检查包名和类名的拼写:请确保包名和类名的拼写没有错误。在错误消息中提到了“org.apache.struts.actions”作为一个程序包,所以我们需要确定这个包的存在并且拼写正确。 3. 检查版本兼容性:可能是由于不兼容的版本导致找不到所需的包。请确保使用的Struts库版本与项目所需的兼容,并检查Struts文档以了解所用版本的包和类名。 4. 检查类路径:如果类路径设置不正确,也会导致无法找到包。请确保项目的类路径包含了所需的Struts包和类的位置。 总结一下,Java中的错误信息“程序包org.apache.struts.actions不存在”意味着无法找到或加载所需的Struts包中的actions类。通过检查Struts库导入、包名和类名拼写、版本兼容性以及类路径设置,我们可以解决这个问题,确保能正确使用Struts框架构建Web应用程序。 ### 回答3: 在Java中,程序包org.apache.struts.actions不存在的错误提示通常意味着在项目中缺少了Struts的相关依赖库。 Struts是一个用于构建基于Java的Web应用程序的开源框架。org.apache.struts.actions是Struts框架中的一个包,提供了与Action相关的类和功能。 如果在项目中需要使用Struts框架,并且在编译或运行时出现“程序包org.apache.struts.actions不存在”的错误提示,可以采取以下步骤进行解决: 1. 首先,确保在项目中正确引入了Struts的相关依赖库。可以通过在项目的构建文件(如pom.xml)中添加相应依赖来解决。例如,在Maven项目中,可以添加如下依赖: ```xml <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts-core</artifactId> <version>2.x.x</version> <!-- 替换为实际的Struts版本 --> </dependency> ``` 2. 确认项目的classpath中包含了Struts的相关库文件。可以检查项目的构建路径或部署路径,确保包含了Struts相关的jar文件。 3. 确认所使用的Struts版本与项目中引用的版本一致。如果存在多个版本的Struts依赖库,可能会导致冲突和错误。 4. 如果以上步骤都没有解决问题,可能是因为项目中的部分依赖库存在版本冲突。可以尝试升级或降级Struts的依赖库版本,或者通过使用构建工具(如Maven或Gradle)来管理项目的依赖关系。 总结:在Java中,出现“程序包org.apache.struts.actions不存在”的错误提示通常是因为项目中缺少了Struts的相关依赖库。解决该问题的关键是正确引入并配置项目所需的Struts依赖库,并确保这些库在项目的构建路径中可用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值