对于初学者来说,将struts,spring,hibernate整合在一起进行项目开发,总会遇到这样或者那样的问题。有时这些问题会让人束手无策。昨天,我复习了下spring hibernate struts 的相关知识,做了个ssh集成的小项目。现将ssh集成的方法和本次集成时出现的问题与解决的办法,在这和大家共享。
我的开发环境:winxp+myeclipse5.5+eclipse3.2+sql server 2000
spring 2.0 + hibernate 3.1 + struts 1.2
一、ssh集成
1.spring和hibernate集成:
spring和hibernate集成很简单,一般将hibernate交给spring管理,在spring的applicationContext.xml文件中加入如下代码即可:
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver">
</property>
<property name="url"
value="jdbc:microsoft:sqlserver://localhost;DatabaseName=jrl_test">
</property>
<property name="username" value="sa"></property>
<property name="password" value="1234"></property>
</bean>
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="dataSource">
<ref bean="dataSource" />
</property>
<property name="hibernateProperties">
<props>
<prop key="hibernate.dialect">
org.hibernate.dialect.SQLServerDialect
</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/jrl/model/News.hbm.xml</value>
<value>com/jrl/model/NewsReview.hbm.xml</value>
<value>com/jrl/model/User.hbm.xml</value>
<value>com/jrl/model/Category.hbm.xml</value>
</list>
</property>
</bean>
2.spring与struts集成
spring 和struts集成,是将spring以插件的形式集成到struts中,在struts-config.xml文件中加入如下代码:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
将struts的action交给spring管理,在struts-config.xml文件中加入如下代码:
<controller inputForward="true" processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
由spring管理action后,action中就不需要定义type属性
<action attribute="loginForm" input="/login.jsp" name="loginForm" path="/login" scope="request">
<forward name="login" path="/login.jsp"></forward>
<forward name="success" path="/login_success.jsp"></forward>
</action>
在spring的applicationContext.xml中注入struts的action
<bean name="/login" class="com.jrl.struts.action.LoginAction">
<property name="manager" ref="facadeManager"/>
</bean>
3.另一种spring集成办法
直接将spring集成到web.xml中,当启动webapp即加载applicationContext。在web.xml中加入如下代码
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
二、 本次遇到的错误及解决办法
错误:http 404 Servlet action is not available
一般出现404,让人的第一感觉就是没有找到对应的资源,
解决办法:首先要找对原因,先保证web.xml,applicationContext.xml,struts-config.xml配置没有错误。如果仍然出现404,那么在web.xml中加载spring的applicationContext,在web.xml中添加如下代码
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<servlet>
<servlet-name>context</servlet-name>
<servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
然后在重新启动tomcat,就会发现缺少相应的包(eclipse 没有自动将包加入到WEB-INF/lib中),我这次发现是缺少commons-pool-1.3.jar,将该jar包加入到WEB-INF/lib下,重启tomcat即可。
错误:Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Instantiation of bean failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool
解决办法:一般是缺少jar包, 本次是缺少commons-pool.jar,将缺少的jar加载到工程去即可
错误:Error creating bean with name 'sessionFactory' defined in ServletContext resource [/WEB-INF/applicationContext.xml]: Invocation of init method failed;nested exception is java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)
解决办法:一般是spring和hibernate中的jar包冲突了,在使用Spring的AOP编程时,会用到这几个jar:asm-2.2.2.jar,asm-commons-2.2.2.jar ,asm-util-2.2.2.jar,Hibernate使用jar:asm.jar,asm-attrs.jar,其中asm-2.2.2.jar与asm.jar存在类上的冲突!!! 将冲突的包删除即可,本次删除了asm-2.2.2.jar。
分享到:
相关推荐
简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者简单易懂的ssh整合,适合初学者
非常适合初学者。SSH整合小案例。代码中配有注释。方便学习。
简单的SSH整合,可以下载看看,反正不要分,是我当初初学的时候自己用来练手的东西,对于初学者来说应该还是可以下载来看看的
非常适合初学的ssh整合,本人的一点心得。
NULL 博文链接:https://1185651333201311151844.iteye.com/blog/2156573
对于初学者来说,刚接触SSH的时候,肯定是一个一个来学习的,接下来需整合他们,而整合的具体事例网上很少,希望通过以上对Struts2.2+Hibernate+Spring+Mysql+Tomcat6.0源码的学习,对大家有所帮助。
轻量级框架spring+springmvc+hibernate的整合demo,适合初学者使用借鉴,简单的实现了整合
MyEclipse_ssh整合、适合初学者练习
SSH的整合案例 一个SSH的整合案例,适合初学者
整合的ssh框架,里jar包全面,ssh2框架,适合初学者
适合ssh初学者,分享促进进步
最新开发项目框架整合版本sturts2+spring+hibernate 完整代码,内容注释详细,树形结构,表格结构设计精妙,可做简单项目脚手架 eclipse平台,初学者必备
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 jbpm4.4 jar ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
ssh整合实例--实现简单注册功能(学习历程),利于初学者学习SSH,项目中SSH所用到的 jar 包绝对没有冲突,备注:除了spring是使用spring-2.5.6版本之外,Struts2和hibernate的jar包都是目前最新的组合..都是本人努力的...
struts + hibernate + spring, 用户登录后,操作-CRUD (连数据库都给出来了!“傻瓜式导入运行”) SSH整合初学者适用,物有所值....
非常适合SSH整合的初学者学习,思路清晰,整合步骤一目了然。
ssh整合连接池是自己总结的常用的连接池使用方法,给初学者一个帮助,希望有用
基于ssh的整合,struts2 spring4、hibenate4 适合初学者ssh整合参考资料,类容简单,思路明了,有详细备注