S2SH环境搭建
先是导入这三个框架所需要的包,导入顺序最好是先struts2,然后spring,最后hibernate,前两个框架导入需要用到的核心包即可(和一般单个框架使用的时候没有什么不同)
在导入hibernate,myeclise询问是否创建hibernate.cfg.xml文件
这里涉及到sessionFactory的管理,以及hibernate的相关属性的配置方式
有两种
第一种:
?用spring管理sessionFactory,可以不需要hibernate.cfg.xml文件
第一步:创建数据源
sessionFactory需要数据源,所有先要在spring里配置数据源
用到的jar包是commons.dbcp.jar需要额外导入spring persistence jdbc库
详细xml文件:
<bean id="dataSource" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>
??<property name="url" value="jdbc:microsoft:sqlserver://localhost:1433"></property>
??<property name="username" value="sa"></property>
??<property name="password" value="111"></property>
?</bean>
第二步:管理sessionFactory
需要用到的spring中的orm库
详细xml文件
?<bean id="sessionFactory"
??/>
??</property>
??<!--
???<property name="mappingResources"> <list>
???!这里填写hibernate的映射文件路径
???<value></value> </list>
???</property>
??-->
<!-- hibernate的相关属性 -->
??<property name="hibernateProperties">
???<props>
????<prop key="hibernate.dialect">
?????org.hibernate.dialect.SQLServerDialect
????</prop>
????<prop key="hibernate.show_sql">true</prop>
???</props>
??</property>
?</bean>
?
在这里spring与hibernate已经集成了
?
然后是spring与struts2集成(步骤很简单)
spring管理struts2的action需要的包? struts2-spring-pluin.jar
在struts2配置文件中加入常量信息
<constant name="struts-objectFactory"? value="org.apache.struts2.spring.StrutsSpringObjectFactory"></constant>
然后
struts2的action中的class改为spring中管理bean的ID
?
注意的地方
部署启动工程时,当控件台报找不到
org.springframework.web.context.ContextLoaderListener这个类时,首先要检查的时看看这个对应类的jar包导入了没有,在myeclipse下导入spring的jar包时很可能没有导入spring? web的jar包
?
还有可能看到这个异常
Could not open ServletContext resource [/WEB-INF/applicationContext.xml]
这里是找不到spring的配置文件,默认情况下ContextLoaderListener会去WEB-INF目录下去找一个applicationContext.xml的配置文件,如果是把它放在类路径下就需要在web.xml文件下说明上下文参数
详细代码如下:
?<!--
? <context-param>
?? <param-name>contextConfigLocation</param-name>
?? <param-value>classpath:bean.xml</param-value>
?</context-param>
? -->
?