176142998

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            116 Posts :: 0 Stories :: 45 Comments :: 0 Trackbacks

          一說起傳說中的SSH(Struts+Spring+Hibernate)架構,許多人的心里面就沒有底。

          依照本人來看,所謂的整合沒有什么神秘的,只不過就是讓三個框架在一起協同的工作,我們做的主要工作就是讓其知道彼此的存在,打成“統一戰線聯盟”以后,再各自為戰,互不干擾。

          下面就本人知道的一些整合方法一一敘述。

          1 Struts+Spring

          主要就是讓Struts知道Spring的存在,我們可以采用兩種辦法。

          (1) 運用Struts的插件方法,添加struts-congif.xml的<plug-in>節點。

          示例代碼如下:

          xml 代碼
          1. <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">  
          2.         <set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />  
          3.     </plug-in>   

          上段代碼意圖很簡單:把Struts的配置文件和Spring的配置文件聯系起來,這樣Struts就知道了Spring的存在。

          另外,在web.xml里面需要配置一個Spring的監聽器,示例代碼如下:

          xml 代碼
          1. <listener>  
          2.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
          3.     </listener>   

          第一種方法完畢。

          (2) 直接在web.xml里面進行加載。

          這種方法與上種方法的不同之處在于Spring的配置文件加載的位置不同,上種方法是在struts-cong.xml中聲明,而這種方法是在web.xml里面進行聲明,示例代碼如下:

          xml 代碼
          1. <context-param>  
          2.         <param-name>contextConfigLocation</param-name>  
          3.         <param-value>  
          4.              /WEB-INF/applicationContext-module1.xml,   
          5.              /WEB-INF/applicationContext-module2.xml  
          6.         </param-value>  
          7.     </context-param>  

          這樣我們就實現了第二種方法的SS整合。

          問題至于我們還要遇到一個小問題,那就是Struts如何實用Spring的特性?Struts怎么就知道Spring注入的Bean呢?當然,這需要我們進行編程式的聲明,眾所周知,在Strus的Action里面有一個setServlet方法,我們此時就需要覆蓋這個方法,當ActionServlet把請求轉發到此Action時,Action就可以實用Spring的特性。

          示例代碼如下:

           

          java 代碼
          1. import org.springframework.context.ApplicationContext;   
          2. import org.springframework.web.context.support.WebApplicationContextUtils;   
          3.   
          4. public void setServlet(ActionServlet actionServlet) {   
          5.         try {   
          6.             super.setServlet(actionServlet);   
          7.              ServletContext servletContext = actionServlet.getServletContext();   
          8.              context = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);   
          9.          } catch(Exception e) {   
          10.              e.printStackTrace();   
          11.          }   
          12.      }  

           

          其中context是ApplicationContext的實例,有了上串代碼以后我們就可以以下面的方式進行Spring的特性利用了!

          java 代碼
          1. protected IXjdjService getXjdjServiceImp(){   
          2.         return (IXjdjService) context.getBean("xjdj");   
          3.      }  

          到此OK,Struts與Spring的整合成功。

          2 Spring+Hibernate

          可以說Spring與Hibernate的整合是非常完善的,具體要素如下:

          在Hibernate中,最重要的無非就是兩點,一是配置數據庫連接池,二是配置實體類的映射文件。現在我貼出上述兩點在Spring里面是怎么配的,配置完畢以后,我們完全可以刪除hibernate.cfg.xml文件。示例代碼如下:

          xml 代碼
          1. <bean id="dataSource"     
          2.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">     
          3.         <property name="driverClassName">     
          4.             <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>     
          5.         </property>     
          6.         <property name="url">     
          7.             <value>jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=EXAM</value>     
          8.         </property>     
          9.         <property name="username">     
          10.             <value>sa</value>     
          11.         </property>     
          12.         <property name="password">     
          13.             <value>135780</value>     
          14.         </property>     
          15.     </bean>     
          16.     <!-- 配置Hibernate會話工廠 -->     
          17.     <bean id="sessionFactory"     
          18.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">     
          19.         <property name="dataSource">     
          20.             <ref bean="dataSource" />     
          21.         </property>     
          22.         <!-- 在此可以配置Hibernate會話工廠的屬性 -->     
          23.         <property name="hibernateProperties">     
          24.             <props>     
          25.                 <prop key="hibernate.dialect">     
          26.                      org.hibernate.dialect.SQLServerDialect      
          27.                 </prop>     
          28.                 <prop key="hibernate.show_sql">true</prop>     
          29.                      
          30.              </props>     
          31.         </property>     
          32.         <!-- 在此可以匹配*.hbm.xml映射文件 -->     
          33.         <property name="mappingDirectoryLocations">     
          34.             <list>     
          35.                 <value>     
          36.                      classpath:/com/wjh/comm/framework/bean      
          37.                 </value>     
          38.                    
          39.             </list>     
          40.         </property>     
          41.         <property name="mappingResources">  
          42.            <list>  
          43.                 <value>com/wjh/example/User.hbm.xml</value>  
          44.           </list>  
          45. </property>  
          46. </bean>   

          OK,到此就完成了Spring+Hibernate的整合,縱觀整個過程,我們可以發現一點,那就是所謂的整合就是他們配置文件的融合,只要抓住這一點,再復雜的程序也會變的簡單。

          網友經常說,我也是這么做的,但是總是不成功。說實在的這個東西理論很簡單,但是實際操作起來確實要費一番周折,大家在整合過程中出現了什么問題,不妨貼出來,我們一起討論討論!

          http://hi.baidu.com/ziheng65/blog/item/0546d01609bedb4f21a4e904.html

          posted on 2008-06-13 13:45 飛飛 閱讀(262) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 兴海县| 武鸣县| 开封县| 资溪县| 滨海县| 上林县| 普宁市| 泽库县| 都安| 哈尔滨市| 松溪县| 平凉市| 双桥区| 宁阳县| 桂东县| 潜山县| 黑山县| 普洱| 武义县| 天全县| 育儿| 婺源县| 永宁县| 固镇县| 曲靖市| 车致| 海门市| 柳江县| 周至县| 阿拉善盟| 宿松县| 霍邱县| 宜阳县| 织金县| 兴宁市| 鲁山县| 七台河市| 西藏| 遂宁市| 宜都市| 铁力市|