孙卫琴《精通Struts:基于MVC的Java Web设计与开发》中,第二章介绍了一个很适合初学者学习的比较简单的struts例子:helloapp,大家可以到这个网址下学习:
http://dev.csdn.net/article/47/47301.shtm
在学习调试的过程中,我遇到了很多问题:
1.第一次在浏览器下浏览时报错,然后再启动tomcat就一直报错,错误是:
struts java.lang.NoClassDefFoundError: org/apache/commons/beanutils/Converter
意思是找不到common-beanutils.jar下的Converter类。但事实上,我检查过,那些类都在
在网上搜了很多办法,比如把common-beanutils.jar包放到%java_home%\jre\lib\ext下之类的,可是还是没解决问题,因为接着又报以下的错误:
java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
意思是找不到HttpServlet类!——这怎么可能,因为之前我做的jsp以及servlet的例子都要用到这个类……
后来经过和调试过的同学比较,发现我的电脑上环境变量没配置好。
注意:对struts来说,这个是很重要的。
在环境变量的classpath配置应该如下:
.;%JAVA_HOME%\lib;D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\servlet-api.jar;D:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib\jsp-api.jar
其中,D:\Program Files\Apache Software Foundation\Tomcat 5.5是你的tomcat的安装路径,根据你tomcat的版本以及安装盘的不同要做相应的变化
如此一来,问题解决啦——tomcat可以启动,也出现了想要的界面
2. 但是当进行错误验证时,即不输入名字,或者输入monster时,又出错了,报错如下:
java.lang.ClassCastException:org.apache.struts.action.ActionMessage
呵呵,在网上一查,原来原因是这个:
在HelloForm.java下,把
ActionMessages errors = new ActionMessages();
if ((userName == null) || (userName.length() < 1))
errors.add("username", new ActionMessage("hello.no.username.error"));
return errors;
改为
ActionErrors errors = new ActionErrors();
if ((userName == null) || (userName.length() < 1))
errors.add("username", new ActionError("hello.no.username.error"));
return errors;
在HelloAction.java下,把
ActionMessages errors=new ActionMessages();
String userName=(String)((HelloForm)form).getUserName();
String badUserName="Monster";
if(userName.equalsIgnoreCase(badUserName)){
errors.add("username",new ActionMessage("hello.dont.talk.to.monster",badUserName));
saveErrors(request,errors);
改为:
ActionErrors errors=new ActionErrors();
String userName=(String)((HelloForm)form).getUserName();
String badUserName="Monster";
if(userName.equalsIgnoreCase(badUserName)){
errors.add("username",new ActionError("hello.dont.talk.to.monster",badUserName));
saveErrors(request,errors);
注意,改动之后,要记得导入两个包哦:
import org.apache.struts.action.ActionError;
import org.apache.struts.action.ActionErrors;
如此一来这个例子就完全成功啦!
为了方便初学者哦
希望大家遇到问题也能发出来,这样能节省很多时间,少走很多弯路……
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/luyangever/archive/2008/11/07/3236896.aspx