SSH整合(低版本)
手动配置SSH
1. 添加Hibernate支持
a) 添加Hibernate核心jar包及它所依赖的jar包
i. hibernate-3.2\hibernate3.jar
ii. hibernate-3.2\lib\*.jar
b) 添加Hibernate核心配置文件
i. hibernate-3.2\etc\ hibernate.cfg.xml
ii. hibernate-3.2\etc\ log4j.properties
c) 创建实体类pojo\Product.java
d) 创建Product.hbm.xml实体映射文件
e) 创建工具类util\ExportDB.java类 (该工具类的作用为生成数据库表)
2. 添加Spring支持
a) 添加Sping核心jar包及相关jar包
i. spring-framework-2.0\dist\ spring.jar
ii. spring-framework-2.0\lib\ aspectj\*.jar
iii. spring-framework-2.0\lib \jakarta-commons\ commons-logging.jar
iv. spring-framework-2.0\lib \jakarta-commons\ commons-dbcp.jar
v. spring-framework-2.0\lib \jakarta-commons\ commons-pool.jar
vi. spring-framework-2.0\lib \log4j\*.jar
b) 添加Spring配置文件
i. spring-framework-2.0\samples\jpetstore\war\WEB-INF\ applicationContext.xml
c) 创建数据访问层
i. 定义dao\IProductDao接口
ii. 定义dao\impl\ProductDaoImpl
1. ProductDaoImpl需要继承HibernateDaoSupport实现IProductDao接口
a) HibernateDaoSupport是Spring对Hibernate进行持久化操作的封装类,相当于BaseHibernateDao,需要注意的是在利用HibernateDaoSupport进行持久化操作时,需要为HiberanteDaoSupport类注入SessionFactory。
d) 创建业务逻辑层
i. 定义biz\IProductBiz接口
ii. 定义biz\impl\ProductBizImpl
e) 将sessionFactory , Dao , Biz配置到spring配置文件中(因为他们三者之间存在着依赖关系,我们需要使用Spring的IOC容器和DI思想实现依赖注入)
i. 注意sessionFactory的配置。
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>
解释LocalSessionFactoryBean类是Spring框架用来创建sessionFactory的实现类,该类在实现sessionFactory时,需要Hibernate主配置文件的支持
<bean id="proDao" class="dao.impl.ProductDaoImpl">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<bean id="proBiz" class="biz.impl.ProductBizImpl">
<property name="proDao" ref="proDao"></property>
</bean>
3. 添加Struts支持
a) 添加struts-1.2.9-bin\struts-1.2.9-bin\lib\*.jar
b) 添加struts核心配置文件
struts-1.2.9-bin\webapps\struts-blank\WEB-INF\struts-config.xml
c) 在web.xml文件中配置ActionServlet
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
d) 创建struts两大核心组件(Action和ActionForm),在action中定义proBiz成员变量并,提供set方法
e)在struts配置文件中配置ActionForm与Action,Struts文件中的Action为DelegatingActionProxy(因为需要利用Spring的IoC容器和DI技术 将proBiz注入给Action,因此Struts中的Action就应该交由Spring来创建和管理。Struts中的所有Action都由DelegatingActionProxy来代替。DelegatingActionProxy的主要作用是获的Beanfactory,再通过请求路径从Spring管理容器中找到由Spring负责创建和管理的Action对象)
<action path="/product" name="proForm" parameter="operate" type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="add_ok" path="/ok.jsp"></forward>
<forward name="add_fail" path="/pro_add.jsp"></forward>
</action>
f)在sping配置文件中配置Action,并将proBiz注入给Action
<bean name="/product" class="web.actions.ProductAction">
<property name="proBiz" ref="proBiz"></property>
</bean>
4. 由于DelegatingAction需要获取Beanfactory,而BeanFactory是Spring框架的核心控件,是个重量级JavaBean,它的创建和销毁都相当消耗资源和性能,因此一个应用程序最好只需要创建一个该对象就OK,从而引出了Struts和Spring的两种整合方案,一种是监听器整合,一种是通过Struts的插件Plugin进行整合
5. 通过监听器整合
a) 在web.xml中配置监听器
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
解释:该监听器的主要作用主要是创建Beanfactory对象,而创建该对象时需要提供spring的核心配置文件,通过上下文参数可以提供给该监听器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:applicationContext.xml</param-value>
</context-param>
6. 通过struts插件plugin整合
a) 在struts核心配置文件中配置插件
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="classpath*:applicationContext.xml"/>
</plug-in>