这几天在做Struts2+Spring2+Hibernate3.1的整合尝试,开发环境是Myeclipse6.0
开发期间遇到不少问题,这里不定期发表自己的一点心得.
首先最让我头痛的就是兼容问题,所以第一次尝试使用这个开发模式的同学必须面对大量莫名其妙的问题!然而这些问题基本出在spring2.0的包问题上.熟悉spring1.x开发的人在用到
org.springframework.web.context.ContextLoaderListener 时应该是没有任何问题的,而如果用myeclipse6.0的话,千万要记住要导入spring的web包,因为此时将出
classnotfoundException 而他直接指向的就是org.springframework.web.context.ContextLoaderListener!!
接下来还没完,因为还有一个因为不兼容的错误
org.springframework.beans.factory.BeanCreationException在等着你解决,而错误中提示
java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
所以一看就知道少包了,所以我们就到http://commons.apache.org/downloads/download_pool.cgi下载一个
pool包,将commons-pool-1.4.jar导入,哈哈!!我们的整合终于开始了!
我现将所有要的包展示出来
其实还有个一劳永逸的方法,不用myeclipse的自带的包,自己到官网去下载一个完整的spring.jar导入到lib下
上述问题就不存在了!!!
2月19更新:
经过几天的摸索,其中又遇到不少难题,但还是解决了!
1.我首先遇到的就是struts2的输入校验问题,我本来的设定是用一个action处理多个方法,达到代码的最大重用,然而在
输入校验的时候却麻烦了,因为我一直以为一个action对应一个validation.xml,而现在我的action却处理了多个方法,包括注册和登陆,两个完全不同的表单啊,但是我仔细想下,不可能啊,既然设计者设计出能处理多个方法的action,必定设计好了相应的校验方法,果然翻阅资料后发现确实可以啊,格式为 Action名-方法名-validation.xml 并且子过滤文件可以继承父文件的校验规则!!哈哈,多美妙的设计啊!!!!!!!!!!!
2.在我验证校验规则的时候,我遇到一个很头痛的问题,为什么我的所有的属性都变成session属性范围了,我想了好多办法,也查了n多资料都不解,崩溃边缘….为什么会这样?不是说struts2的Action是每次访问都会新建一个实例的么,
后来在网上找到了仅有的一篇文章找到了答案,下面摘抄原文(spring2+struts2,在struts2中,action确实是线程安全的,但把action配置到spring中去后,由于spring2默认的scope为singleton,所以就变成action只会有一个实例了。所以要把scope配置成scope=”prototype”(spring1.x中是singleton=”false”)就可以了) !!!
3.就是一个很奇怪的问题,在tomcat6中,我只能最多部署一个struts2项目,这是什麽鬼啊~~,超过1个就报找不到
struts-default.xml的错,郁闷啊,完全没道理啊~~还有我整合后竟不支持热部署了,报的错和我刚说的一样,郁闷死了
今天就到这里吧~~
Start Slide Show with PicLens Lite 标签:apache, Code, commons, Download, hibernate, java, JAVA, ps, spring, tomcat, Web, 代码, 文件, 设计