Struts+Hibernate+Spring组合开发的环境搭建
由于SSH组合开发在实际的大型项目中是用得最多的,所有SSH的环境搭配对于开发人员来说也是比较重要的。
SSH的环境搭配主要包括两个方面:Struts与Spring的组合;Hibernate与Spring的组合.
SSH的组合工作主要有两步:导入需要的Jar包;实现SSH的组合
第一步,导入需要的Jar包
在MyEclipse中,导入SSH的顺序应该是Spring、Hibernate、Struts。
导入的操作比较简单,其中最需要注意的就是在导入Hibernate的时候要选择通过Spring的applicationContext.xml文件对Hibernate进行管理,即不需要创建hibernate.cfg.xml的原因。这也是为什么Spring在Hibernate之前导入的原因了。
第二步,实现SSH的组合,这也是SSH组合的重点
首先是Struts与Spring的组合,他们的组合无非就是将Struts的Action交给Spring管理,这需要添加一个插件,在struts-config.xml文件中生成等如下的代码:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" /> </plug-in>
在上述代码中是添加了一个ContextLoaderPlugIn插件,并添加了一个属性contextConfigLocation,其指向的是/WEB-INF/classes/applicationContext.xml,即Spring的控制文件,除此之外,还需要添加一个controller,所以最终在struts-config.xml文件生成的代码为:
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"> </controller> <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"> <set-property property="contextConfigLocation" value="/WEB-INF/classes/applicationContext.xml" /> </plug-in>
其中的controller的作用是对所有的Struts的请求都交给Spring管理。
struts-config.xml文件修改完了以后,还需要在web.xml文件中添加一个context-param,具体代码如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/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>
这一点是与struts-config.xml文件中的plugin中的属性相对应的。
到此为止,Struts与Spring的组合搭配就算完成了。
然后就是Hibernate与Spring的搭配了,现在的applicationContext.xml文件应该为如下的内容:
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean"> <property name="jndiName" value="java:comp/env/jdbc/demo"></property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props></props> </property> </bean>
在上述代码中,应在sessionFactory的HibernateProperties属性中添加相应内容,最后的效果如下:
<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.MySQLDialect </prop> <prop key="hibernate.connection.autocommit">true</prop> <prop key="hibernate.show_sql">true</prop> </props> </property> <property name="mappingResources"> <list> </list> </property> </bean>
接着在applicationContext.xml文件添加如下的节点:
<bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory"> <ref bean="sessionFactory" /> </property> </bean>
最后是在web.xml文件添加对session的管理代码:
<filter> <filter-name>opensession</filter-name> <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class> </filter> <filter-mapping> <filter-name>opensession</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
完成这一步以后,那么整个SSH组合的搭配基本也就结束了,你就可以利用Spring的强大功能完成对Struts和Hibernate的控制了。
在以后的文章中我会介绍这样组合以后如何使用各个框架,以上这些也是我在学习SSH的过程中的一些总结吧,希望能对各位同样的JAVA爱好有一定的帮助。
-------------------------------
添加过滤器