<strong>
一共有6步(文章底部附有源碼下載地址,剛學完ssh的可以借鑒)
</strong>
1
寫一個Hibernate應用,完成用戶的增加
1
) User實體
2
)UserDao接口
save(User u)
3
)UserDaoImpl實現UserDao
save(User u){
//
用hibernate api
}
2
讓spring注入SessionFactory
1
)在上一個應用中導入Spring的jar包
除了基礎的6個包,還得導入2個jar包
org.springframework.jdbc
-3.0.5
.RELEASE.jar
org.springframework.orm
-3.0.5
.RELEASE.jar
org.springframework.transaction
-3.0.5
.RELEASE.jar
2
) 增加配置文件beans.xml
<bean id="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation" value="classpath:hibernate.cfg.xml"/>
</bean>
<bean id="userDao"
class
="包名.UserDaoImpl">
<property name="sessionFactory" ref="sessionFactory">
</bean>
3
) 在測試方法中,獲得userDao,然后測試save()
UserDao userDao
= (UserDao)cxt.getBean("userDao"
);
3
添加數據源,并注入到SessionFactory
1
) 需要導入2個包
commons
-
dbcp.jar
commons
-
pool.jar
注:數據源的第3方實現有非常多,現我們用其中一種,commons
-
dbcp
2
) 配置Datasource
<bean id="myDataSource"
class
="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/spring_db"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</bean>
3
)在SessionFactory Bean中注入dataSource
<bean id="mySessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 注入DataSource Bean-->
<property name="dataSource" ref="myDataSource"/>
<property name="mappingResources">
<list>
<value>com/toceansoft/entity/User.hbm.xml</value>
</list>
</property>
<property name="hibernateProperties">
<value>
hibernate.dialect
=
org.hibernate.dialect.MySQLDialect
hibernate.hbm2ddl.auto
=
update
hibernate.show_sql
=
true
</value>
</property>
</bean>
4
) 測試結果
4
使用spring提供的HibernateTemplate
1
) 在Dao中添加
private
HibernateTemplate hibernateTemplate;
public
void
setSessionFactory(SessionFactory sessionFactory) {
this
.hibernateTemplate =
new
HibernateTemplate(sessionFactory);
}
2
)修改方法,改成使用hibernateTemplate
save(o)
hibernateTemplate.save(o);
5
使用spring在業務層切入事務
1
)在業務層寫一個接口UserService
public
void
add(User u);
2
) 寫一個實現類UserServiceImpl實現接口UserService
public
void
add(User u){}
3)實現類UserServiceImpl提供userDao的get/
set方法
4
)在beans.xml中配置UserServiceImpl 的Bean,并注入userDao
5
)配置事務管理器Bean
<bean id="txManager"
class
="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
6
) 配置事務通知
<tx:advice id="txAdvice" transaction-manager="txManager">
<!-- 包括隔離級別,事務傳播屬性。。。 -->
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
7
)配置aop切面
<aop:config>
<aop:pointcut id="serviceMethods"
expression
="execution(* com.toceansoft.service.impl.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
</aop:config>
8
)測試結果
9
)在add方法內拋出異常,再測試觀察結果
throw
new
RuntimeException();
6
整合Spring與Struts
1
)在把上面的java 應用變成web應用
--
把上面應用Src下的所有東東復制到web應用的src
2
)導入struts2開發的基礎jar包,還需要一個特殊包
struts
-spring-
plugin.jar
導入與struts2整合的spring相應的包
org.springframework.web.struts
-3.0.5
.RELEASE.jar
org.springframework.web
-3.0.5
.RELEASE.jar
3) 把beans.xml 復制到WEB-
INF,并且改名為applicationContext.xml(可選的)
4
) 在web.xml中配置spring啟動的監聽器
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml,classpath*:applicationContext2.xml</param-value>
</context-param>
<listener>
<listener-
class
>org.springframework.web.context.ContextLoaderListener</listener-
class
>
</listener>
5
)在web.xml配置Struts2的啟動
<filter>
<filter-name>struts2</filter-name>
<filter-
class
>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-
class
>
<!-- <filter-
class
>org.apache.struts2.dispatcher.FilterDispatcher</filter-
class
>-->
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>
/*
</url-pattern>
</filter-mapping>
6)在Web包下寫UserAction,并且提供業務層UserSerivce的set方法
7)在appplicationContext.xml中配置UserAction bean
<bean id="userAction" class="com.toceansoft.web.action.UserAction" scope="prototype">
<property name="userService" ref="userService" />
</bean>
注:scope="prototype"
8) 在struts.xml中配置UserAction
<!-- 跳轉到添加產品頁面 -->
<action name="User_toAdd" >
<result>/User_add.jsp</result>
</action>
<!-- 添加產品 -->
<!-- 關鍵點:這里的class設置action bean在spring配置文件中bean的id -->
<action name="User_add" class="userAction" method="add">
<result name="success">/grobal_message.jsp</result>
</action>
9) 寫2個頁面
User_add.jsp
grobal_message.jsp
10)部署測試
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

