关于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框架以来的一个小小的总结,后续再慢慢学习。。加油!!!

时间: 2024-10-12 02:43:39

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

SSH2框架搭建 和 配置文件详解

-----------补充说明----------- 文章中所列出的struts2的2.2jar包已经不是最新的了,这个版本有严重漏洞, 现在最新版本为2.3.15,所以.你懂的http://struts.apache.org/download.cgi#struts23151 感谢网友提醒,现在不做ssh2的开发了,所以也忘了更新这篇文章,误导大家了,抱歉! SSH框架,当今最为流行的项目开发框架组合,那么掌握他的第一步是学习如何配置环境,java Web开发的无论哪种框架都离不开各种xml配置

SSH2框架搭建

SSH框架,当今最为流行的项目开发框架,那么掌握他的第一步自然是学习如何配置环境,java Web开发的无论哪种框架都离不开各种xml配置,虽然说配置在网上到处都有,但是要成为高手,必须要明白配置中每一部分的意义,分析它的规律,因此走好这第一步至关重要. SSH分为SSH1和SSH2,区别主要在于Struts的版本,即Struts1和Struts2,Struts1与Struts2在配置上有所差别,但每一步配置的意义区别不大.对于Struts1框架的搭建我已经在之前的文章介绍过了:http://b

ssh2框架搭建及代码

1.建立web工程 创建数据库 导入向对应的jar包 2. 持久层: (1)在cn.itcast.elec.domain中创建持久化类ElecText @SuppressWarnings("serial") public class ElecText implements java.io.Serializable { private String textID; private String textName; private Date textDate; private String

SSH2框架搭建和配置文件详解

SSH框架,当今最为流行的项目开发框架组合,那么掌握他的第一步是学习如何配置环境,java Web开发的无论哪种框架都离不开各种xml配置,虽然说配置在网上到处都有,但是要成为合格的程序猿,必须要明白配置中每一部分的意义,分析它的规律,因此这一步至关重要. SSH分为SSH1和SSH2,区别主要在于Struts的版本,即Struts1和Struts2,Struts1与Struts2在配置上有所差别, 这回主要为大家介绍的是基于Struts2的SSH2框架搭建. 我们在搭建框架之前,首先一定要注意

SSH框架搭建过程

什么是SSH? SSH对应 struts spring hibernate struts 采用MVC模式,主要是作用于用户交互 spring 采用IOC和AOP~作用比较抽象,是用于项目的松耦合 hibernate 是对象持久化框架,其实就是实体类和数据库表建立关系,操作类就会触发相应的sql语句,可以不用写任何sql语句,完成数据库编程(引自百度知道) SSH就是Struts + Spring + Hibernate 3个Java框架的集合,现在Java开发中常用的框架组合.用来开发后台,与前

web server(protein protection )搭建过程中遇到的问题

1.StringBuffer中append方法有错误 原因分析:是project默认的JRE系统库和配置的jre不匹配. 解决方法:项目属性->Add Libray->JRE System Library->Alternate JRE(选择Sun JDK 1.6.0_13) 2.文件上传问题 mySmartUpload.setAllowedFilesList("txt");  //设置上传文件类型只能是txt格式 文件上传处理过程 jsp文件: <div id=

【甘道夫】HBase开发环境搭建过程中可能遇到的异常:No FileSystem for scheme: hdfs

异常: 2014-02-24 12:15:48,507 WARN  [Thread-2] util.DynamicClassLoader (DynamicClassLoader.java:<init>(106)) - Failed to identify the fs of dir hdfs://fulonghadoop/hbase/lib, ignored java.io.IOException: No FileSystem for scheme: hdfs 解决: 在pom文件中加入: &

ELK搭建过程中出现的问题与解决方法汇总

搭建过程中出现的问题 elasticsearch启动过程中报错[1] ERROR: [1] bootstrap checks failed [1]: the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, d iscovery.seed_providers, cluster.initial_master_nodes] must be confi

个人博客搭建过程中异常处理

个人博客搭建过程中异常处理 错误分析 如果你使用Hexo遇到同样的问题,这里有一些常见问题的解决方案. YAML Parsing Error JS-YAML: incomplete explicit mapping pair; a key node is missed at line 18, column 29: last_updated: Last updated: %s 参数中包含冒号,请用加引号,如Last updated: %s JS-YAML: bad indentation of a