`
jinkingmanager
  • 浏览: 39116 次
  • 性别: 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集成 SPRING STRUTS HIBERNATE

    在SSH集成中,Spring作为核心,负责协调Struts和Hibernate的工作,同时可以实现服务层的事务管理。 **Struts框架**: Struts是基于MVC设计模式的Web应用框架,它负责处理HTTP请求,解析请求参数,并将控制权交给...

    ssh集成框架(spring ,Hibernate,struts)

    SSH集成框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中常见的三大开源框架的集成。这个框架组合提供了完整的MVC(Model-View-Controller)设计模式支持,帮助开发者构建高效、可维护的Web应用。接...

    ssh集成jar包,支持spring集成Hibernate,spring集成struts2等

    - 在SSH集成项目中,需要包含各自框架的jar包,如spring-core、spring-context、spring-tx、hibernate-core、struts2-core等。 - 还需包括相关的依赖库,例如log4j、javassist、cglib等,这些是SSH框架运行所需的...

    SSH集成SSH集成

    Spring还包含了用于数据访问、事务管理、Web应用和测试的模块,是SSH集成中的“S”。 **Struts框架** 是基于MVC设计模式的Java Web框架,主要负责处理HTTP请求和控制应用程序流程。它通过Action和ActionForm类来...

    SSH集成 Struts+spring+hibernate集成

    SSH集成是Java开发Web应用程序时常用的一种框架整合方式,它结合了Struts、Spring和Hibernate三个开源框架的优势,提供了一种高效、灵活且易于管理的解决方案。以下将详细阐述这三个框架以及它们集成后的主要特点和...

    SSH和Spring框架简介

    SSH,是由Struts2、Spring和Hibernate三个框架组成的集成解决方案,而Spring则是一个全面的后端开发框架,包含了多种功能模块。 首先,我们来详细了解SSH中的每一个组件: 1. **Struts2**:这是一个基于MVC(Model...

    SSH集成框架(源码)

    SSH集成框架,全称为Spring、Struts和Hibernate的组合,是Java Web开发中常见的三大开源框架集成。这个框架集合了Spring的依赖注入、事务管理,Struts的MVC设计模式,以及Hibernate的对象关系映射(ORM)功能,为...

    SSH集成例子(积分管理,Spring2.5,Struts2,Hibernate3.3)

    SSH集成是Java开发中一种常见的技术栈组合,包括Spring、Struts和Hibernate,它们分别负责应用的依赖注入、MVC框架和对象关系映射。在这个例子中,SSH被用来构建一个积分管理系统,其中Spring2.5、Struts2和...

    Java:SSH-Spring整合struts2&hibernate;框架

    4. 集成Spring和Struts2:配置Struts2的插件,使得Struts2的动作类可以注入由Spring管理的业务层bean。此外,可以通过Spring的ModelDriven或ActionForm模式将模型对象传递给视图层。 5. 创建业务逻辑和DAO:根据需求...

    ssh集成jar包

    这个压缩包“ssh集成jar包”包含了搭建SSH框架所需要的各种库文件。 Spring框架是核心,它提供了依赖注入(Dependency Injection,DI)和面向切面编程(Aspect-Oriented Programming,AOP)的功能,使得代码更加...

    WEB ssh集成

    在IT行业中,SSH集成指的是Spring、Struts和Hibernate这三个开源框架的集成,它们是Java Web开发中的重要组件。Spring提供依赖注入和面向切面编程,Struts处理MVC(模型-视图-控制器)架构,而Hibernate则负责对象...

    struts spring hibernate ssh 三大框架集成详细步骤 手把手教你搭框架

    在SSH集成中,Spring作为核心容器,管理着应用的bean,包括Struts的Action类和Hibernate的SessionFactory。此外,Spring还负责事务管理,保证数据的一致性。 **Hibernate框架**: Hibernate是一个优秀的对象关系...

    ssh集成demo

    Spring可以管理Struts2中的Action实例,实现业务对象的自动装配,同时提供事务管理、数据访问集成等功能。 **Hibernate** 是一个对象关系映射(ORM)框架,它允许开发者用Java对象来操作数据库,而无需直接编写SQL...

    基于spring注解的SSH2框架集成

    在这个基于Spring注解的SSH2框架集成中,我们将深入探讨如何将这三个组件有效地整合,并利用Spring的注解驱动特性提升开发效率。 首先,Struts2是一个强大的MVC(Model-View-Controller)框架,它在Struts1的基础上...

    ssh,struts+hibernate+spring+ehcache集成

    在SSH集成中,Spring通常用于管理Struts的Action以及Hibernate的SessionFactory,同时负责事务的协调。 Ehcache是基于内存的缓存解决方案,它可以在内存中存储经常访问的数据,减少对数据库的访问,从而提高应用的...

    权限管理系统SSH集成

    下面我们将详细探讨SSH框架集成在权限管理系统中的应用。 首先,Struts是MVC(Model-View-Controller)设计模式的一种实现,主要负责处理HTTP请求,提供视图和业务逻辑之间的交互。在权限管理系统中,Struts可以...

    springssh 我上培训班时spring框架搭建课件

    **配置Struts2与Spring的集成**:为了使Struts2能够利用Spring的依赖注入特性,需要在struts.xml配置文件中添加特定的配置,比如设置`objectFactory`为`spring`,这意味着Struts2将使用Spring来创建和管理Action实例...

    ssh集成的小型测试项目

    SSH集成的小型测试项目是一个基于Java的Web应用程序,它整合了Struts2、Hibernate和Spring三大框架,并且利用Ajax技术增强了用户体验。这个项目对于初学者和想要深入理解这些技术的人来说,是一个非常有价值的实践...

    SSH集成步骤 SSH集成步骤

    SSH集成了Struts的MVC设计模式、Spring的依赖注入和事务管理以及Hibernate的对象关系映射功能。下面将详细介绍SSH在Eclipse或MyEclipse中的集成步骤。 1. **新建WEB工程** 首先,你需要在Eclipse 3.2.2或MyEclipse...

    SSH框架集成的配置方法

    Struts2的配置通常在struts.xml文件中进行,这里没有直接提及,但值得注意的是,Struts2需要与Spring进行整合,以便在Action类中注入Spring管理的bean。这通常通过Struts2的Spring插件实现,配置包括添加插件配置和...

Global site tag (gtag.js) - Google Analytics