您的位置:首页 > 移动开发

Struts 的javax.servlet.servletexception: cannot find actionmappings or actionformbeans collection错误

2005-02-03 01:44 465 查看
调试一个有验证使用了标签的struts程序碰到了这样一个问题,检查了N个地方,没有找到错误,开始网上搜索。发现原来这是一个普遍问题啊,有很多种情况会导致这个问题,但大致就是以下几种情况:
1。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>debug</param-name>
<param-value>2</param-value>
</init-param>
</servlet>
以上少了一个
<load-on-startup>0</load-on-startup>
这样开始是没有加载这个类,就没有初始化struts-config.xml,所以找不到actionmappings or actionformbeans collection。
这个错误的特征是,如果开始访问login.jsp出错,但手动访问login.do后就没有任何错误了。我就是碰到这样的情况。
PS:web.xml还有可能没有定义Tag Library,也有可能出问题,参照struts例子解决。
2。struts-config.xml问题
主要是action 的path 还有和formbean的对应问题
<form-beans>
<form-bean name="loginForm"
type="com.javapro.struts.LoginForm"/>
</form-beans>

<action-mappings>
<action
path="/login"
type="com.javapro.struts.LoginAction"
name="loginForm"
input="/login.jsp"
unknown="true">
<forward name="success" path="/mainMenu.jsp"/>
</action>
以上是一个正确的对应,注意大小写问题
PS:这里还有格式不正确导致配置无法正确加载,可以看到控制台或log文件中有出错的提示。比如没有结束标签,属性名字写错了等等
还有如果抄书的话,可能书使用的版本较老,有可能
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
中是1。0,web.xml可能也有这个问题,参考你用的版本的例子就好了。
3。jar包不全或版本不对
也有可能导致这个问题,从stuts例子里面拷过来就好了。
4。编译问题
有可能Action和Formbean没有编译,也会有这个问题,检查一下有没有对应的class文件就好。class路径不对可能也会导致这个问题。
5。版本问题
用的servlet容器和struts版本不对或这两个版本协调有问题。
在以上几条都不能解决问题的情况下,可能就是版本的问题了,换个高版本试试吧

可能还有其他情况,欢迎补充
----------------
因为写书或文章的时候用的struts版本与现在的版本不同,抄书上的例子很有可能运行不了,还是要根据新版本的示例来改啊,不过这样收获也很多,对于加深理解很有帮助。看来学程序还就是不能动手少了。我相信当我解决了100个问题后,我也就精通struts了

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐