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

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

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

    江蘇520

    江蘇520

    常用鏈接

    統(tǒng)計(jì)

    最新評(píng)論

    集成struts2 spring hibernate的實(shí)例

    集成struts,spring,hibernate時(shí),對(duì)于初學(xué)者來(lái)說(shuō)最大的麻煩就其繁瑣的xml配置文件。現(xiàn)在三者都對(duì)基于注解的配置提供了良好的支持。在struts2中,使用convent plugin,得益于annotation和規(guī)約,配置過(guò)程得以大大減少。在spring2.5也可以使用@Autowired,進(jìn)行注入,使用@Controller,@Service,@Repository注解,自動(dòng)定義bean,還支持annotation風(fēng)格的聲明式事務(wù)支持,以及aspectJ類似的AOP。hibernate也可以使用JPA標(biāo)準(zhǔn)注解定義實(shí)體描述,避免使用mapping文件。

    當(dāng)然,對(duì)于annotation和xml風(fēng)格的配置,誰(shuí)更好,更多依賴個(gè)人興趣。但使用annotation確實(shí)減少了很多配置工作量。本文采用annotation風(fēng)格的配置,以TaskList為例子講解struts2 spring hibernate的集成。項(xiàng)目文件見(jiàn)附件。

    一:配置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中創(chuàng)建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屬性,配置啟用調(diào)試,將有更多的錯(cuò)誤信息輸出,便于排錯(cuò)。struts.convention.default.parent.package屬性,指定使用注解標(biāo)注的控制器的默認(rèn)包。可以在這個(gè)默認(rèn)包中配置全局信息。

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

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

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

    二:配置spring

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

     

    <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掃描的包,多個(gè)包逗號(hào)隔開,任何標(biāo)注了@Component,@Controller,@Service,@Repository的類,都會(huì)被自動(dòng)識(shí)別為bean。

    <aop:aspectj-autoproxy />聲明aspectj動(dòng)態(tài)代理,啟用注解驅(qū)動(dòng)的aspectj配置。

    <tx:annotation-driven />啟用注解驅(qū)動(dòng)的聲明事務(wù)支持。

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

    三:hibernate配置

    hibernate配置獨(dú)立配置,方便修改。

     

    <?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>         
      
            
    <!-- 最大連接數(shù) -->  
            
    <property name="hibernate.c3p0.max_size">20</property>  
            
    <!-- 最小連接數(shù) -->  
            
    <property name="hibernate.c3p0.min_size">5</property>  
            
    <!-- 獲得連接的超時(shí)時(shí)間,如果超過(guò)這個(gè)時(shí)間,會(huì)拋出異常,單位毫秒 -->  
            
    <property name="hibernate.c3p0.timeout">120</property>  
            
    <!-- 最大的PreparedStatement的數(shù)量 -->  
            
    <property name="hibernate.c3p0.max_statements">100</property>  
            
    <!-- 每隔120秒檢查連接池里的空閑連接 ,單位是秒-->  
            
    <property name="hibernate.c3p0.idle_test_period">120</property>  
            
    <!-- 當(dāng)連接池里面的連接用完的時(shí)候,C3P0一下獲取的新的連接數(shù) -->  
            
    <property name="hibernate.c3p0.acquire_increment">2</property>  
            
    <!-- 每次都驗(yàn)證連接是否可用 -->  
            
    <property name="hibernate.c3p0.validate">true</property>  
      
            
    <mapping class="domain.Task" />  
        
    </session-factory>  
    </hibernate-configuration>  


     

     

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

    主站蜘蛛池模板: 国产精品亚洲一区二区三区久久| 又粗又硬又大又爽免费视频播放| 在线亚洲人成电影网站色www| 亚洲精品午夜在线观看| A毛片毛片看免费| 中文亚洲AV片在线观看不卡| j8又粗又长又硬又爽免费视频| 国产免费久久精品| 婷婷国产偷v国产偷v亚洲| 免费看的一级毛片| 亚洲AV无码专区亚洲AV桃| 国产自产拍精品视频免费看| 色偷偷噜噜噜亚洲男人| 精品国产免费观看久久久 | mm1313亚洲精品无码又大又粗| 亚洲精品天堂成人片?V在线播放| 日韩一级片免费观看| 伊人久久大香线蕉亚洲五月天 | 亚洲va在线va天堂va不卡下载| 亚欧免费无码aⅴ在线观看| 亚洲综合精品香蕉久久网97| 67pao强力打造高清免费| 成人永久免费高清| 成年免费a级毛片| 亚洲成a人片在线观看无码| 免费播放一区二区三区| 欧洲 亚洲 国产图片综合| 国产伦精品一区二区三区免费下载 | 亚洲人成电影网站免费| 欧洲乱码伦视频免费国产| 亚洲妇熟XXXX妇色黄| 免费看黄视频网站| 亚洲成AV人片天堂网无码| 中文字幕乱码免费视频| 国产亚洲精品仙踪林在线播放| 久久久久噜噜噜亚洲熟女综合| 99在线观看精品免费99| 精品无码专区亚洲| 亚洲欧洲国产精品你懂的| 日本免费观看网站| 亚欧免费一级毛片|