最近暂无项目,于是想学习下Struts2。公司开发用普元的EOS,平时很少接触这些SSH框架。
考虑到多学些东西多积累写技术对公司没有什么坏处,经理并没有反对,只是告诉我们不要
耽误工作。
下载了最新的struts2.1.6,解压,按照reference写helloword.配置文件与reference中的
几乎一字不差。可以一运行就爆出警告:
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2009-2-24 13:24:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
提交之后肯定报错说是找不到Action.之后就开始疯狂的Google以排除错误。折腾了2个小时排除了配置文件语法错误、
java语法错误、form表单的action以.action作为后缀、没有添加commons-io-1.3.2.jar和commons-fileupload-1.2.1.jar两个必须jar包等、jar包文件损坏等可能。问题依旧。
一番折腾之后几近崩溃,这时候我又看了下启动日志发现有一下两条输出:
信息: Parsing configuration file [struts-default.xml]
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Unable to locate configuration files of the name struts-plugin.xml, skipping
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
怀疑是缺少jar包,把struts2-all lib 中的20多个jar包全复制过去,问题更严重了,启动都起不起来了。
最后把我的虚拟目录去掉,运行struts2-all/app中的struts2-blank-2.1.6.war,虽然也报了那两条Unable的警告
但程序能够正常运行。看来Jar文件是没有问题的,那两条警告也不影响使用。无奈之下,只能跟人家的配置文件一一
比对,确定没有问题。实在找不出是哪出了问题,郁闷到了极点,打算就此打住,有时间再说。
正当打算关闭窗口,关机的时候,发现有点不对,人家的Web-Inf/目录下面只有一个web.xml文件,而我的
有三个:web.xml、struts.xml、HelloWorld.xml。再仔细看人家把那两个放到了Web-inf/classes/目录下了。
当时感觉自己可笑又可气,折腾了半天是这出了问题。以前写过两个struts1.2的小程序,记得当时的配置文件
struts-config.xml就是放到web-inf/目录下了,因此我就没多想直接将文件放那了,谁承想人家把规则该了。
最后可能可以总结出三个教训:
1.做事情一定要细心,不要以为清车熟路就大意
2.排除错误从简单到复杂,不要一出问题就google,在没有把产生问题的原因理清之前,网上找到的那些解决
方案和建议很可能把你搞的更晕
3.如果你是某个框架的设置者,不算随便更改规则。
书写此文作为这件事情的教训总结,也希望各位新学Struts2的诸君能够作为前车之鉴,不要象我一样为这么点
小事情而耽误那么多宝贵时间
考虑到多学些东西多积累写技术对公司没有什么坏处,经理并没有反对,只是告诉我们不要
耽误工作。
下载了最新的struts2.1.6,解压,按照reference写helloword.配置文件与reference中的
几乎一字不差。可以一运行就爆出警告:
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
2009-2-24 13:24:02 com.opensymphony.xwork2.util.logging.commons.CommonsLogger warn
警告: No configuration found for the specified action: 'HelloWorld' in namespace: ''. Form action defaulting to 'action' attribute's literal value.
提交之后肯定报错说是找不到Action.之后就开始疯狂的Google以排除错误。折腾了2个小时排除了配置文件语法错误、
java语法错误、form表单的action以.action作为后缀、没有添加commons-io-1.3.2.jar和commons-fileupload-1.2.1.jar两个必须jar包等、jar包文件损坏等可能。问题依旧。
一番折腾之后几近崩溃,这时候我又看了下启动日志发现有一下两条输出:
信息: Parsing configuration file [struts-default.xml]
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
信息: Unable to locate configuration files of the name struts-plugin.xml, skipping
2009-2-24 13:23:37 com.opensymphony.xwork2.util.logging.commons.CommonsLogger info
怀疑是缺少jar包,把struts2-all lib 中的20多个jar包全复制过去,问题更严重了,启动都起不起来了。
最后把我的虚拟目录去掉,运行struts2-all/app中的struts2-blank-2.1.6.war,虽然也报了那两条Unable的警告
但程序能够正常运行。看来Jar文件是没有问题的,那两条警告也不影响使用。无奈之下,只能跟人家的配置文件一一
比对,确定没有问题。实在找不出是哪出了问题,郁闷到了极点,打算就此打住,有时间再说。
正当打算关闭窗口,关机的时候,发现有点不对,人家的Web-Inf/目录下面只有一个web.xml文件,而我的
有三个:web.xml、struts.xml、HelloWorld.xml。再仔细看人家把那两个放到了Web-inf/classes/目录下了。
当时感觉自己可笑又可气,折腾了半天是这出了问题。以前写过两个struts1.2的小程序,记得当时的配置文件
struts-config.xml就是放到web-inf/目录下了,因此我就没多想直接将文件放那了,谁承想人家把规则该了。
最后可能可以总结出三个教训:
1.做事情一定要细心,不要以为清车熟路就大意
2.排除错误从简单到复杂,不要一出问题就google,在没有把产生问题的原因理清之前,网上找到的那些解决
方案和建议很可能把你搞的更晕
3.如果你是某个框架的设置者,不算随便更改规则。
书写此文作为这件事情的教训总结,也希望各位新学Struts2的诸君能够作为前车之鉴,不要象我一样为这么点
小事情而耽误那么多宝贵时间
与stucts2有关的就只有一个struts2-core-2.1.6.jar和xwork-2.1.2.jar。其他的从名称上看
该是一些辅助包和测试包,没有关于struts2的plugin的包。如果那位知道产生那几条信息:
Unable to locate configuration files of the name struts-plugin.xml, skipping
产生的原因,请不吝赐教。ps:
lib中的jar包如下:
commons-fileupload-1.2.1.jar
commons-io-1.3.2.jar
commons-logging-1.1.jar
freeer-2.3.13.jar
junit-3.8.1.jar
ognl-2.6.11.jar
spring-test-2.5.6.jar
struts2-core-2.1.6.jar
xwork-2.1.2.jar
jstl.jar
standard.jar