<strong> 一共有6步(文章底部附有源碼下載地址,剛學(xué)完ssh的可以借鑒) </strong> 1 寫(xiě)一個(gè)Hibernate應(yīng)用,完成用戶的增加 1 ) User實(shí)體 2 )UserDao接口 save(User u) 3 )UserDaoImpl實(shí)現(xiàn)UserDao save(User u){ // 用hibernate api } 2 讓spring注入SessionFactory 1 )在上一個(gè)應(yīng)用中導(dǎo)入Spring的jar包 除了基礎(chǔ)的6個(gè)包,還得導(dǎo)入2個(gè)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 ) 在測(cè)試方法中,獲得userDao,然后測(cè)試save() UserDao userDao = (UserDao)cxt.getBean("userDao" ); 3 添加數(shù)據(jù)源,并注入到SessionFactory 1 ) 需要導(dǎo)入2個(gè)包 commons - dbcp.jar commons - pool.jar 注:數(shù)據(jù)源的第3方實(shí)現(xiàn)有非常多,現(xiàn)我們用其中一種,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 ) 測(cè)試結(jié)果 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在業(yè)務(wù)層切入事務(wù) 1 )在業(yè)務(wù)層寫(xiě)一個(gè)接口UserService public void add(User u); 2 ) 寫(xiě)一個(gè)實(shí)現(xiàn)類UserServiceImpl實(shí)現(xiàn)接口UserService public void add(User u){} 3)實(shí)現(xiàn)類UserServiceImpl提供userDao的get/ set方法 4 )在beans.xml中配置UserServiceImpl 的Bean,并注入userDao 5 )配置事務(wù)管理器Bean <bean id="txManager" class ="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/> </bean> 6 ) 配置事務(wù)通知 <tx:advice id="txAdvice" transaction-manager="txManager"> <!-- 包括隔離級(jí)別,事務(wù)傳播屬性。。。 --> <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 )測(cè)試結(jié)果 9 )在add方法內(nèi)拋出異常,再測(cè)試觀察結(jié)果 throw new RuntimeException(); 6 整合Spring與Struts 1 )在把上面的java 應(yīng)用變成web應(yīng)用 -- 把上面應(yīng)用Src下的所有東東復(fù)制到web應(yīng)用的src 2 )導(dǎo)入struts2開(kāi)發(fā)的基礎(chǔ)jar包,還需要一個(gè)特殊包 struts -spring- plugin.jar 導(dǎo)入與struts2整合的spring相應(yīng)的包 org.springframework.web.struts -3.0.5 .RELEASE.jar org.springframework.web -3.0.5 .RELEASE.jar 3) 把beans.xml 復(fù)制到WEB- INF,并且改名為applicationContext.xml(可選的) 4 ) 在web.xml中配置spring啟動(dòng)的監(jiān)聽(tīng)器 <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的啟動(dòng) <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包下寫(xiě)UserAction,并且提供業(yè)務(wù)層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 <!-- 跳轉(zhuǎn)到添加產(chǎn)品頁(yè)面 --> <action name="User_toAdd" > <result>/User_add.jsp</result> </action> <!-- 添加產(chǎn)品 --> <!-- 關(guān)鍵點(diǎn):這里的class設(shè)置action bean在spring配置文件中bean的id --> <action name="User_add" class="userAction" method="add"> <result name="success">/grobal_message.jsp</result> </action> 9) 寫(xiě)2個(gè)頁(yè)面 User_add.jsp grobal_message.jsp 10)部署測(cè)試
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
