<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    江蘇520

    江蘇520

    常用鏈接

    統計

    最新評論

    集成struts2 spring hibernate的實例

    集成struts,spring,hibernate時,對于初學者來說最大的麻煩就其繁瑣的xml配置文件。現在三者都對基于注解的配置提供了良好的支持。在struts2中,使用convent plugin,得益于annotation和規約,配置過程得以大大減少。在spring2.5也可以使用@Autowired,進行注入,使用@Controller,@Service,@Repository注解,自動定義bean,還支持annotation風格的聲明式事務支持,以及aspectJ類似的AOP。hibernate也可以使用JPA標準注解定義實體描述,避免使用mapping文件。

    當然,對于annotation和xml風格的配置,誰更好,更多依賴個人興趣。但使用annotation確實減少了很多配置工作量。本文采用annotation風格的配置,以TaskList為例子講解struts2 spring hibernate的集成。項目文件見附件。

    一:配置struts2。

    首先在web.xml文件中配置filter

    <filter>  
        
    <filter-name>struts2</filter-name>  
        
    <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
    </filter>  
      
    <filter-mapping>  
        
    <filter-name>struts2</filter-name>  
        
    <url-pattern>*.action</url-pattern>  
    </filter-mapping>  

    然后在classpath中創建struts.xml配置文件。

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"   
            " http://www.bt285.cn /dtds/struts-2.1.dtd"
    >  
    <struts>  
        
    <constant name="struts.devMode" value="true" />  
        
    <constant name="struts.convention.default.parent.package" value="default-package" />  
        
    <constant name="struts.convention.package.locators" value="action" />  
        
    <package name="default-package" extends="convention-default">  
      
            
    <default-action-ref name="index" />  
      
            
    <action name="index"  >  
                
    <result>http://www.5a520.cn /WEB-INF/content/index.jsp</result>  
            
    </action>    
      
        
    </package>  
    </struts>  

     

    struts.devMode屬性,配置啟用調試,將有更多的錯誤信息輸出,便于排錯。struts.convention.default.parent.package屬性,指定使用注解標注的控制器的默認包。可以在這個默認包中配置全局信息。

    struts.convention.package.locators屬性,為查找控制器包路徑的關鍵字。如com.mycompany.action,com.mycompany.action.user,都會被struts2掃描。里面有繼承至Action的類,或類名以Action結尾的類,都會做為Action處理。

    <default-action-ref name="index" />指定了默認action,如果指定的action不存在則訪問該action。

    把struts2-spring-plugin-2.1.6.jar添加到classpath中,struts2會自動掃描struts-plugin.xml文件,該文件自動注冊了com.opensymphony.xwork2.ObjectFactory,完成和spring的集成。

    二:配置spring

    在web.xml中加入ContextLoaderListener,用以啟動spring容器。用contextConfigLocation指定spring配置文件路徑,可以使用*通配符結尾。

     

    <listener>  
        
    <listener-class>org.springframework.web.context.ContextLoaderListener   
        
    </listener-class>  
    </listener>  
    <context-param>  
        
    <param-name>contextConfigLocation</param-name>  
        
    <param-value>http://www.bt285.cn :/applicationContext.xml</param-value>  
    </context-param> 

    配置applicationContext.xml

    <?xml version="1.0" encoding="UTF-8"?>  
    <beans>  
      
        
    <context:component-scan base-package="persistence,service,action,aop"/>  
           
        
    <aop:aspectj-autoproxy  />  
      
        
    <tx:annotation-driven transaction-manager="transactionManager" />  
           
        
    <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" >  
            
    <property name="sessionFactory" ref="sessionFactory" />  
        
    </bean>  
      
        
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean" >       
            
    <property name="configLocation" value="classpath:hibernate.cfg.xml" />  
        
    </bean>  
      
        
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >  
            
    <property name="sessionFactory" ref="sessionFactory" />  
        
    </bean>  
           
    </beans>  

    <context:component-scan />指定Bean掃描的包,多個包逗號隔開,任何標注了@Component,@Controller,@Service,@Repository的類,都會被自動識別為bean。

    <aop:aspectj-autoproxy />聲明aspectj動態代理,啟用注解驅動的aspectj配置。

    <tx:annotation-driven />啟用注解驅動的聲明事務支持。

    然后定義了sessionFactory和transactionManager,hibernateTemplate用來注入到Dao中,取代繼承的方式使用spring對hibernate的集成支持。

    三:hibernate配置

    hibernate配置獨立配置,方便修改。

     

    <?xml version="1.0" encoding="UTF-8"?>  
    <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">  
    <hibernate-configuration>  
        
    <session-factory>  
            
    <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>  
            
    <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>  
            
    <property name="hibernate.connection.url">jdbc:mysql:// http://www.feng123.com :3306/sshdemo</property>  
            
    <property name="hibernate.connection.username">root</property>  
            
    <property name="hibernate.connection.password">root</property>  
            
    <property name="hibernate.hbm2ddl.auto">update</property>  
            
    <property name="hibernate.show_sql">true</property>  
            
    <property name="hibernate.format_sql">true</property>  
            
    <property name="hibernate.current_session_context_class">thread</property>         
      
            
    <!-- 最大連接數 -->  
            
    <property name="hibernate.c3p0.max_size">20</property>  
            
    <!-- 最小連接數 -->  
            
    <property name="hibernate.c3p0.min_size">5</property>  
            
    <!-- 獲得連接的超時時間,如果超過這個時間,會拋出異常,單位毫秒 -->  
            
    <property name="hibernate.c3p0.timeout">120</property>  
            
    <!-- 最大的PreparedStatement的數量 -->  
            
    <property name="hibernate.c3p0.max_statements">100</property>  
            
    <!-- 每隔120秒檢查連接池里的空閑連接 ,單位是秒-->  
            
    <property name="hibernate.c3p0.idle_test_period">120</property>  
            
    <!-- 當連接池里面的連接用完的時候,C3P0一下獲取的新的連接數 -->  
            
    <property name="hibernate.c3p0.acquire_increment">2</property>  
            
    <!-- 每次都驗證連接是否可用 -->  
            
    <property name="hibernate.c3p0.validate">true</property>  
      
            
    <mapping class="domain.Task" />  
        
    </session-factory>  
    </hibernate-configuration>  


     

     

    posted on 2009-05-14 17:40 江蘇520 閱讀(4075) 評論(0)  編輯  收藏

    主站蜘蛛池模板: 日韩精品无码免费视频| 亚洲日韩av无码中文| 国产免费一区二区视频| 亚洲愉拍99热成人精品热久久| 午夜免费国产体验区免费的| 免费一区二区三区四区五区| 免费精品国产自产拍在线观看| 俄罗斯极品美女毛片免费播放| 免费人成视频在线播放| 亚洲一区二区三区乱码A| a级在线免费观看| 亚洲一卡2卡三卡4卡有限公司| 国产一级做a爱免费视频| 亚洲av成人一区二区三区观看在线 | 免费国产人做人视频在线观看| 国产偷国产偷亚洲高清人| 日韩插啊免费视频在线观看 | 国产精品亚洲а∨无码播放不卡 | 亚洲第一区香蕉_国产a| 亚洲av乱码一区二区三区按摩 | avtt天堂网手机版亚洲| 日本最新免费不卡二区在线| 黄页网址大全免费观看12网站 | 亚洲一区二区三区久久久久| 日韩免费电影在线观看| 人成午夜免费大片在线观看| 国产亚洲无线码一区二区| 在线播放亚洲精品| 综合久久久久久中文字幕亚洲国产国产综合一区首 | www国产亚洲精品久久久日本| 中文在线免费观看| 亚洲啪啪免费视频| 亚洲国产婷婷综合在线精品 | 亚洲精品综合久久| 99久久久国产精品免费牛牛| 亚洲色偷精品一区二区三区| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲av永久无码精品天堂久久| 四虎影视在线永久免费看黄| 日韩免费高清大片在线| 免费无码一区二区|