关于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>

不能接受失败,也意味太想去成功了,从心理学上解释,

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

相关文章:

你感兴趣的文章:

标签云: