<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)  編輯  收藏

    主站蜘蛛池模板: 黄色免费网址在线观看| 亚洲精品第一综合99久久| 手机永久免费的AV在线电影网| 免费看www视频| 西西人体大胆免费视频| 成人免费视频软件网站| 亚洲人成色777777老人头| 国产美女无遮挡免费网站| 久久久久久a亚洲欧洲aⅴ| 久久久久久久久久免免费精品| 18女人水真多免费高清毛片| 亚洲自偷自拍另类图片二区| 99久久精品日本一区二区免费| 亚洲视频一区二区三区四区| 成年女人看片免费视频播放器| 亚洲国产成人无码AV在线| 免费A级毛片在线播放不收费| 一级女性全黄久久生活片免费| 伊人亚洲综合青草青草久热| 久久国产免费观看精品| 91亚洲精品自在在线观看| 免费羞羞视频网站| 日日摸夜夜添夜夜免费视频| 亚洲精品无码不卡在线播HE| 看亚洲a级一级毛片| 亚洲性日韩精品一区二区三区| 伊人免费在线观看高清版| 亚洲AV人无码综合在线观看| 国产免费久久精品99re丫y| 黄色a三级三级三级免费看| 亚洲乱色熟女一区二区三区丝袜 | 日韩毛片免费在线观看| 黄色三级三级三级免费看| 久久亚洲国产精品一区二区| 国产精品久久久久久久久久免费 | 亚洲人成网网址在线看| 日本xxwwxxww在线视频免费 | 69天堂人成无码麻豆免费视频| 亚洲av无码一区二区三区四区| 亚洲午夜久久久影院伊人| 毛片免费在线播放|