码迷,mamicode.com
首页 > 其他好文 > 详细

关于SSH2框架搭建过程中出现的问题的总结

时间:2015-03-02 19:08:13      阅读:942      评论:0      收藏:0      [点我收藏+]

标签:异常   myeclipse   ssh2   三大框架   框架搭建   

以前接触过SSH框架,但是一直都没有用过,然后这段时间又重新回顾了一下,当然,期间也碰到了不少问题,然后就在网上查相关资料,折腾了一番,也学到了不少东西,所以决定整理下来。使用的IDE工具是Myeclipse10.1,碰到的问题大致有下面几个:

1、问题1——控制台报加载Struts配置文件失败的异常。

技术分享

异常原因:主要是缺少struts2-spring-plugin-2.X.X.X这个插件jar包。

技术分享

解决方法:将这个jar包导入到项目中即可。

a、可以直接下载所需要的版本如:struts2-spring-plugin-2.2.1.jar,然后将这个jar包放到WebRoot/WEB-INF/lib目录下,然后build Path一下即可。

b、也可以直接通过Myeclipse工具进行添加,只是通过这种方式添加后,会多引入了几个包,我也不知道项目中有没有用到过,反正删掉了其他的几个项目也能正常运行,没有什么影响,应该是项目中没有用到。

右击项目——》选择Build Path——》选择Add Libraries.

技术分享

选择Myeclipse Libraries

技术分享

勾选Struts2 Spring Libraries

技术分享

ok,异常消失。

技术分享

需要注意的是:Struts2得已经交由Spring进行管理了,即配置文件里面已经做了正确的配置了,不然有可能还会出现其他的问题。至于什么问题我就懒得去试了。

a、web.xml配置文件中开启了Spring监听。

技术分享

b、然后struts.xml配置文件中配置了将Struts2委托给Spring进行管理。

技术分享

2、问题2——对象关系映射失败,实体映射失败,找不到POJO类,额,我也不知道能不能这样叫,估计不行,暂且就这样称呼吧。

技术分享

异常原因:entity class not found。
发生的位置:Hibernate的映射文件中xxxx.hbm.xml
解决方法,更改xxxx.hbm.xml映射文件中POJO类的路径
错误的配置:

技术分享

正确的配置:POJO类的完整路径

技术分享

3、问题3——Spring的bean初始化注入失效。这个问题困扰了我好久,我的配置是这样的,Struts.xml文件中的action的class属性值配置的是applicationContext.xml文件中由Spring注入的bean的id值,之前一直以为是这个路径配置文件,导致Spring不能初始化注入,甚至还怀疑过是命名空间namespace的配置问题,试了好几次,最后效果还是一样的报异常。

struts.xml的配置:

技术分享
applicationContext.xml文件的配置:

技术分享

然后启动Tomcat的时候,控制台没有任何异常,一切正常,但是运行的时候,就报不能实例化action的异常。

技术分享

运行,不能实例化action,找不到action的定义

技术分享

之后,做了下尝试,将struts.xml文件的action的class属性写成action的完整路径。这个时候却报空指针,程序找到了action,也进入到了action中,但是action中定义的Service却又出现同样的问题,注入失败,初始化为null。所以报控指针异常。

技术分享

service注入失败,报空指针,用debug跟一下可以看到Service为null.

技术分享

然后,经过一番折腾,在网上搜了好久,最后才发现原来是web.xml配置文件中配置的Spring监听出了问题。applicationContext.xml文件的加载路径配置不正确。

解决方法:
关于applicationContext.xml文件的放置,一般有两种做法,

a、放置在项目的顶级根目录src目录下面。配置方法如下:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>

技术分享

b、放置在项目的WebRoot/WEB-INF目录下面。配置方法如下:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/classes/applicationContext*.xml</param-value>
  </context-param>

技术分享

或者也可以使用下面这种方式:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/classes/applicationContext*.xml</param-value>
  </context-param>

技术分享

由于Spring的监听配置出了问题,所以程序找不到applicationContext.xml文件,于是便无法完成初始化的注入操作了,通过上面两种方式的配置正确后,问题解决。Spring初始化注入成功。

4、问题4——关于数据库的异常,驱动jar包的冲突。使用的是Oracle11g数据库。导入的数据库驱动jar包文件是classes12.jar,运行之后报如下异常:

oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z

Exception in thread "main" java.lang.AbstractMethodError: oracle.jdbc.driver.OracleDatabaseMetaData.supportsGetGeneratedKeys()Z 
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:142) 

解决方法:

换成ojdbc6.jar再运行就没有这个问题了。 问题解决、
应该是驱动的版本与oracle的版本有冲突,所以才会报这个错。

5、问题5——使用的jsp标签跳转到action,一直没有任何效果,请求不到资源,但是浏览器中直接输入page的值,能够成功跳转。

解决方法:

需要在struts.xml文件中过滤器映射中对下面配置dispatcher属性,

技术分享

配置REQUEST和FORWARD属性即可,问题解决、

技术分享

ok,结束,暂时碰到的问题就这么多,这也算是这几天学习SSH2框架以来的一个小小的总结,后续再慢慢学习。。加油!!!

关于SSH2框架搭建过程中出现的问题的总结

标签:异常   myeclipse   ssh2   三大框架   框架搭建   

原文地址:http://blog.csdn.net/hu1991die/article/details/44020229

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!