`
jinkingmanager
  • 浏览: 38575 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

我的SSH集成(spring管理Action)

    博客分类:
  • SSH
阅读更多
我的SSH集成,版本分别是:spring2.0 Struts1.3 Hibernate3.2, Myeclipse 版本是6.01.(本文仅为记录自己的SSH集成步骤而为,中间会有很多错误,如果不想被误导,还是不要看了吧!)

首先新建一个web项目
按照 Struts Spring Hibernate的顺序为项目添加jar包,均使用内置的library

Struts 使用1.3版本,类库无法选择,默认即可。

Spring 选择JDBC library,并将spring.jar和commons-pool.jar、Mysql连接包放到项目WEB-INF/lib下(如果没有将spring.jar放到lib下,则很有可能报错)

Hibernate 默认即可

注意:如果不引入hibernate.cfg.xml,即将配置集成到applicationContext.xml中,那么则需要commons-dbcp.jar 和 commons-pool.jar。但是如果引入hibernate.cfg.xml文件,上面两个jar包并不需要

下面进入重头戏,配置xml文件:

在web.xml中

<!-- 配置Spring 如果在Struts中配置了plugin,那么就不要在这里配置listener了,两者功能一样,都是启动Spring,不过在struts-config.xml中配置plugin时,此项目总是报错,大概信息为无法找到plugin类,但是我已经将spring-struts.jar引入了,暂时无法解决。此处仍然使用listener的方式-->
  <listener>
  	<listener-class>
  	org.springframework.web.context.ContextLoaderListener
  	</listener-class>
  </listener>
  
  <context-param>
  	<param-name>contextConfigLocation</param-name>
  	<param-value>
  		classpath*:applicationContext.xml
  	</param-value>
  </context-param>


另外,还可以加入session的过期时间
<!-- Session过期时间配置,此处时间单位是分钟 -->
  <session-config>
  	<session-timeout>30</session-timeout>
  </session-config>


struts-config.xml中

<form-beans>
  	<form-bean name="loginForm" type="com.king.web.form.LoginForm"></form-bean>
  </form-beans>


<action path="/user/Login" parameter="method" name="loginForm" scope="request" 
  	type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="login" path="/user/login.jsp"></forward>
<forward name="mainPage" path="/user/mainPage.jsp"></forward>
</action>


Spring配置文件
<bean id="King" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName"
			value="com.mysql.jdbc.Driver">
		</property>
		<property name="url" value="jdbc:mysql://localhost:3306/ssh"></property>
		<property name="username" value="root"></property>
		<property name="password" value="test"></property>
	</bean>
	<bean id="sessionFactory"
		class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
		<property name="dataSource">
			<ref bean="King" />
		</property>
		<property name="hibernateProperties">
			<props>
				<prop key="hibernate.dialect">
					org.hibernate.dialect.MySQLDialect
				</prop>
				<prop key="hibernate.hbm2ddl.auto">update</prop>
			</props>
		</property>
<!--		<property name="mappingResources">-->
<!--			<list>-->
<!--				<value>com/king/domain/maps/User.hbm.xml</value>-->
<!--				<value>com/king/domain/maps/Account.hbm.xml</value>-->
<!--			</list>-->
<!--		</property>-->
		<property name="mappingDirectoryLocations">
			<list>
				<value>classpath*:com/king/domain/maps</value>
			</list>
		</property>
	</bean>
	
	<!-- 配置Action Service Dao -->
	<!-- User相关配置 -->
	<bean id="userDao" class="com.king.dao.impl.UserDAO">
		<property name="sessionFactory" ref="sessionFactory"></property>
	</bean>
	
	<bean id="userService" class="com.king.service.impl.UserServiceImpl">
		<property name="userDAO" ref="userDao"></property>
	</bean>
	
	<bean name="/user/Login" class="com.king.web.action.LoginAction">
		<property name="userService" ref="userService"></property>
	</bean>


先记录到这里,剩下的就是java类和jsp页面的编写



启动时出现如下错误,经检查是Spring和Hibernate的包发生了冲突
严重: StandardWrapper.Throwable 
org.springframework.beans.factory.BeanCreationException: 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;)V 
Caused by: java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V 


方案:
在使用Spring的AOP编程时,会用到这几个lib:
asm-2.2.2.jar
asm-commons-2.2.2.jar
asm-util-2.2.2.jar
Hibernate使用如果lib:
asm.jar
asm-attrs.jar
其中asm-2.2.2.jar与asm.jar存在类上的冲突!!!
使用其中之一或两者都使用,可能会出现如下错误:
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor 
java.lang.NoClassDefFoundError: org/objectweb/asm/commons/EmptyVisitor 
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit。。。。。。 

解决办法是:
1.去掉类路径上的关于Hibernate的3个lib 
asm.jar 
asm-attrs.jar 
cglib-2.1.3.jar 
2.加入Spring中的以下4个lib 
asm-2.2.2.jar 
asm-commons-2.2.2.jar 
asm-util-2.2.2.jar 
cglib-nodep-2.1_3.jar 


按照上面的方法进行操作后,我这里还是会出现上述问题。我的解决方案是替换Spring和Hibernate的版本及其包,按照如下步骤:
1、在项目lib中,仅保留mysql的连接数据库包,其余全部删除
2、在buildPath中,将spring 和 Hibernate 的library移除
3、复制如下包到lib中
Spring 2.5.6版本:
aspectjweaver.jar
cglib-nodep-2.1_3.jar
commons-dbcp-1.2.1.jar
commons-logging-1.0.4.jar
commons-pool-1.2.jar
dom4j-1.6.1.jar
log4j-1.2.15.jar
spring.jar
spring-agent.jar
spring-aspects.jar
spring-tomcat-weaver.jar
spring-webmvc-struts.jar


hibernate3.3.1支持jar包
antlr-2.7.6.jar
asm.jar
c3p0-0.9.0.jar
cglib-2.1.3.jar
commons-collections-3.1.jar
concurrent-1.3.2.jar
dom4j-1.6.1.jar
ehcache-1.2.jar
hibernate3.jar
javassist-3.4.GA.jar
jta-1.1.jar
slf4j-api-1.5.2.jar
slf4j-log4j12-1.5.2.jar


替换之后,重新部署,在applicationContext.xml中,会由一个错误,不用管它。
重新部署后,一切正常。搞定

对自己的建议:
SSH集成时,尽量使用自己建立的User Library,使用Myeclipse自带的Library经常会出现包冲突的问题。至于Struts,如果不使用Struts2,可以用Myeclipse的1.3库,不会发生什么冲突。

上面的jar分别是我的Spring2.5.6和Hibernate3.3.1的库,挺好用的,呵呵!

注:

所有Action继承DispatchAction,Form继承ActionForm。和正常的写法没有什么区别
分享到:
评论

相关推荐

    最新SSH集成示例_2016-11-08

    最新SSH集成_2016-11-08.txt 环境:struts2.5.5+spring4.3.3+hiberante5.2.4 真正的集成,struts action交给spring托管。真实的项目工程,带数据库初始化脚本。

    ssh集成的小型测试项目

    这是一个集成struts2+hibernate+spring+ajax的小型测试项目!对于初次学习和很想复习这方面知识的朋友很有帮助!

    SSH2 集成实例代码

    struts2.1 spring2.5 hibernate3.2 很好的集成实例代码,Hibernate配置文件采用POjo注解的形势,spring管理action和BPO、DAO等 用MySQL数据库,用TestServer做JUnit测试时,会自动创建所需要的表

    一个最简单的SSH框架

    一个最简单的SSH框架Struts 、 spring 、 Hibernate 在各层的作用 1 ) struts 负责 web 层 . ActionFormBean 接收网页中表单提交的数据,然后通过 Action 进行处理,再 Forward 到对应的网页。 在 struts-config...

    struts2.4+spring3.1+hibernate4.1的SSH框架

    在业务层中,管理服务组件的Spring IoC容器负责向Action提供业务模型(Model)组件和该组件的协作对象数据处理(DAO)组件完成业务逻辑,并提供事务处理、缓冲池等容器组件以提升系统性能和保证数据的完整性。...

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例

    JQuery1.4.2+Struts2.1.8+JSON0.34+Spring2.5.6+Hibernate3.5+XFire1.2.6整合实例(已上传) 1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、...

    SSH的jar包.rar

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层。 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2、这...

    OA项目SSH整合框架

    -- 集成Spring --&gt; &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener &lt;param-name&gt;contextConfigLocation &lt;param-value&gt;/WEB-INF/classes/applicationContext*.xml 2...

    Android+ssh项目综合实践

    在我们集成struts2+spring+hibernate,也就是所谓的S2SH,不可避免的要引入struts2-spring- plugin.jar插件。当引入这个插件后,原先所struts创建的action类,交给了spring创建。在struts2-spring- plugin.jar中有一...

    OpenID简介及与struts2_spring_hibernate框架集成

    第三章 与Struts2、Spring集成 - 17 - 3.1. 业务逻辑层接口及实现类 - 17 - 3.2. Struts2的Action调用业务逻辑 - 19 - 3.2.1. 登录Action--OpenIDLoginAction - 19 - 3.2.2. 进入的Action—FirstPageAction - 20 - ...

    Struts2SpringHibernate整合,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)

    我在读大学刚刚学习SSH的时候,也是如此。 当时,做了一个Demo性质的在线书店,现在分享给大家。 希望对初学者有所帮助。 包简介 action:控制层,Struts2的Action,响应前端HTTP请求。 service:业务层,处理...

    低清版 大型门户网站是这样炼成的.pdf

    6.4.1 spring 2.5集成orm中间件hibernate 3.2 404 6.4.2 spring 2.5集成mvc框架struts 2 411 6.4.3 ssh 2组合框架的基本开发步骤—eportal启程 414 6.5 小结 423 第2篇 实践篇 第7章 ssh 2热身——构建新闻发布...

    【计算机软件毕业设计】二手车交易平台的分析、设计与实现文献综述1.doc

    关键词:SSH集成框架 Web 1主流Web开发框架分析 1.1 MVC结构模式和WebWork框架 2012年王欢认为MVC的工作原理是,使用MVC时,当用户向Web容器发送一个请求后, Web容器会根据请求和地址去调用一个Servlet进行处理,...

    spring学习笔记

    Spring的Ioc Spring的AOP , AspectJ Spring的事务管理 , 三大框架的整合 目录 1.1 Spring 框架学习路线:..........................................................................................................

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e技术入门、Hibernate高级应用、Spring核心之IoC、...

    Java学习笔记-个人整理的

    {7.1}Java的文件系统管理}{103}{section.7.1} {7.2}回调模式与FileFilter}{104}{section.7.2} {7.3}\ttfamily RandomAccessFile}{106}{section.7.3} {7.4}基本类型数据序列化}{108}{section.7.4} {7.5}String的...

Global site tag (gtag.js) - Google Analytics