posts - 310, comments - 6939, trackbacks - 0, articles - 3
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          Struts2+Spring2+Hibernate3 web應用示例(六)

          Posted on 2007-10-08 14:27 詩特林 閱讀(11750) 評論(9)  編輯  收藏 所屬分類: Struts
                                                    Struts2+Spring2+Hibernate3 web應用示例(六)

        1. Struts2+Spring2+Hibernate3 web應用示例------源代碼
        2. Struts2+Spring2+Hibernate3 web應用示例(七)
        3. Struts2+Spring2+Hibernate3 web應用示例(六)
        4. Struts2+Spring2+Hibernate3 web應用示例(五)
        5. Struts2+Spring2+Hibernate3 web應用示例(四)
        6. Struts2+Spring2+Hibernate3 web應用示例(三)
        7. Struts2+Spring2+Hibernate3 web應用示例(二)
        8. Struts2+Spring2+Hibernate3 web應用示例(一)

        9.  
        10. 八、       配置Struts2

           

          Struts的配置文件都會在web.xml中注冊的。

          a)        Struts的配置文件如下:

          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
              "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
              "http://struts.apache.org/dtds/struts-2.0.dtd"
          >

          <struts>

              
          <constant name="struts.enable.DynamicMethodInvocation" value="false" />
              
          <constant name="struts.devMode" value="true" />
              
          <constant name="struts.i18n.encoding" value="GBK" />   

              
          <!-- Add packages here -->

          </struts>

          Src/struts.xml

          b)        struts_book.xml配置文件如下:

          <?xml version="1.0" encoding="UTF-8" ?>
          <!DOCTYPE struts PUBLIC
                  "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
                  "http://struts.apache.org/dtds/struts-2.0.dtd"
          >

          <struts>

              
          <package name="products" extends="struts-default">
                  
          <!--default-interceptor-ref name="validation"/-->
                   
          <!-- Add actions here -->
                  
          <action name="list" class="bookAction" method="list">            
                      
          <result>/list.jsp</result>
                  
          </action>

              
          <action name="delete" class="bookAction" method="delete">            
                      
          <result type="redirect">list.action?queryMap=${queryMap}</result>
                  
          </action>

                  
          <action name="*" class="com.sterning.commons.AbstractAction">
                      
          <result>/{1}.jsp</result>
                  
          </action>
                  
              
          <action name="edit" class="bookAction" method="load">
                      
          <result>/editBook.jsp</result>
                  
          </action>
                 
                 
          <action name="save" class="bookAction" method="save">
                     
          <interceptor-ref name="params"/>
                     
          <interceptor-ref name="validation"/>
                      
          <result name="input">/editBook.jsp</result>
                      
          <result type="redirect">list.action?queryMap=${queryMap}</result>
                        
                  
          </action>
              
          </package>
          </struts>

           

          文件中的<interceptor-ref name="params"/>,使用了struts2自己的攔截器,攔截器在AOPAspect-Oriented Programming)中用于在某個方法或字段被訪問之前,進行攔截然后在之前或之后加入某些操作。攔截是AOP的一種實現策略。

          Struts 2已經提供了豐富多樣的,功能齊全的攔截器實現。大家可以到struts2-all-2.0.6.jarstruts2-core-2.0.6.jar包的struts-default.xml查看關于默認的攔截器與攔截器鏈的配置。

          struts-default.xml中已經配置了大量的攔截器。如果您想要使用這些已有的攔截器,只需要在應用程序struts.xml文件中通過“<include file="struts-default.xml" />”struts-default.xml文件包含進來,并繼承其中的struts-default包(package),最后在定義Action時,使用“<interceptor-ref name="xx" />”引用攔截器或攔截器棧(interceptor stack)。一旦您繼承了struts-default包(package),所有Action都會調用攔截器棧 ——defaultStack。當然,在Action配置中加入“<interceptor-ref name="xx" />”可以覆蓋defaultStack

          作為框架(framework,可擴展性是不可或缺的,因為世上沒有放之四海而皆準的東西。雖然,Struts 2為我們提供如此豐富的攔截器實現,但是這并不意味我們失去創建自定義攔截器的能力,恰恰相反,在Struts 2自定義攔截器是相當容易的一件事。所有的Struts 2的攔截器都直接或間接實現接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜歡繼承類com.opensymphony.xwork2.interceptor.AbstractInterceptor


           

          九、       配置Spring

           

          1Spring的配置文件如下:

          <?xml version="1.0" encoding="UTF-8"?>
          <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
           
          <beans>
              
          <!-- dataSource config -->
              
          <bean id ="dataSource" 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/game" /> 
                  
          <property name="username" value="root" /> 
                  
          <property name="password" value="root"/> 
              
          </bean> 
              
              
          <!-- SessionFactory -->
              
          <bean id="sessionFactory"
                  class
          ="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

                  
          <property name="dataSource">
                      
          <ref bean="dataSource"/>
                  
          </property>
                  
          <property name="configLocation">
                      
          <value>classpath:com\sterning\bean\hibernate\hibernate.cfg.xml</value>
                  
          </property>        
              
          </bean>
              
              
          <!-- TransactionManager  不過這里暫時沒注入-->
              
          <bean id="transactionManager"
                  class
          ="org.springframework.orm.hibernate3.HibernateTransactionManager">
                  
          <property name="sessionFactory">
                      
          <ref local="sessionFactory"/>
                  
          </property>
              
          </bean>
              
              
          <!-- DAO -->
              
          <bean id="booksDao" class="com.sterning.books.dao.hibernate.BooksMapDao">
                  
          <property name="sessionFactory">
                      
          <ref bean="sessionFactory"/>
                  
          </property>
              
          </bean>
              
              
          <!-- Services -->
              
          <bean id="booksService" class="com.sterning.books.services.BooksService">
                  
          <property name="booksDao">
                      
          <ref bean="booksDao"/>
                  
          </property>
              
          </bean>
              
              
          <bean id="pagerService" class="com.sterning.commons.PagerService"/>
              
              
          <!-- view -->
              
          <bean id="bookAction" class="com.sterning.books.web.actions.BooksAction" singleton="false">
                  
          <property name="booksService">
                      
          <ref bean="booksService"/>
                  
          </property>
                  
          <property name="pagerService">
                      
          <ref bean="pagerService"/>
                  
          </property>
              
          </bean>  
              
          </beans>

            WebRoot/WEB-INF/srping-content/applicationContent.xml

          2Struts.properties.xml

          本來此文件應該寫在struts 配置一節,但主要是考慮這體現了集成spring的配置,所以放在spring的配置這里來講。

          struts.objectFactory = spring  
          struts.locale=zh_CN
          struts.i18n.encoding = GBK
           

          struts.objectFactoryObjectFactory 實現了 com.opensymphony.xwork2.ObjectFactory接口(spring)。struts.objectFactory=spring,主要是告知Struts 2運行時使用Spring來創建對象(如Action等)。當然,SpringContextLoaderListener監聽器,會在web.xml文件中編寫,負責SpringWeb容器交互。

          struts.localeThe default locale for the Struts application 默認的國際化地區信息。

          struts.i18n.encoding:國際化信息內碼。

          十、       Web.xml配置


          <?xml version="1.0" encoding="GB2312"?>
          <!DOCTYPE web-app
              PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
              "http://java.sun.com/dtd/web-app_2_3.dtd"
          >

          <web-app>
              
          <display-name>圖書管理系統</display-name>
              
          <context-param>
                  
          <param-name>log4jConfigLocation</param-name>
                  
          <param-value>/WEB-INF/classes/log4j.properties</param-value>
              
          </context-param>
              
          <!-- ContextConfigLocation -->
              
          <context-param>
                  
          <param-name>contextConfigLocation</param-name>
                  
          <param-value>/WEB-INF/spring-context/applicationContext.xml</param-value>
                
          </context-param>
              
              
          <filter>
                  
          <filter-name>encodingFilter</filter-name>
                  
          <filter-class>com.sterning.commons.SetCharacterEncodingFilter</filter-class>
                  
          <init-param>
                      
          <param-name>encoding</param-name>
                      
          <param-value>UTF-8</param-value>
                  
          </init-param>
                  
          <init-param>
                      
          <param-name>forceEncoding</param-name>
                      
          <param-value>true</param-value>
                  
          </init-param>
              
          </filter>
               
          <filter>
                  
          <filter-name>struts2</filter-name>
                  
          <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
                  
          <init-param>
                      
          <param-name>config</param-name>
                      
          <param-value>struts-default.xml,struts-plugin.xml,struts.xml,struts_books.xml</param-value>
                  
          </init-param>
              
          </filter>    

              
          <filter-mapping>
                  
          <filter-name>encodingFilter</filter-name>
                  
          <url-pattern>/*</url-pattern>
              
          </filter-mapping>
              
          <filter-mapping>
                  
          <filter-name>struts2</filter-name>
                  
          <url-pattern>/*</url-pattern>
              
          </filter-mapping>        
              
              
          <!-- Listener contextConfigLocation -->
                
          <listener>
                  
          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
                
          </listener>
              
          <!-- Listener log4jConfigLocation -->
                
          <listener>
                  
          <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
                
          </listener>
           
              
          <!-- The Welcome File List -->
              
          <welcome-file-list>
                  
          <welcome-file>index.jsp</welcome-file>
              
          </welcome-file-list>
          </web-app>

           

          Struts 2中,配置有少許改變,最明顯的是分發器(dispatcher)已由Servlet轉為Servlet Filter, 其配置和Servlet一樣簡單。和Servlet配置一樣,Filter配置中定義了Filter的名稱(作為引用)和類名。Filter Mapping通過URI和名稱匹配來調用相應的Filter。默認情況下,擴展名為“.action”,這是在default.properties文件(在Struts 2 JAR文件里)的“struts.action.extension”屬性定義的。

          待續.....


        11. 評論

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2007-10-08 14:59 by 阿蜜果
          蠻不錯,不過建議在這一系列文章中添加上篇和下篇的鏈接,讓我們再偷下懶
          啊哈

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2008-08-26 14:25 by ww13515517287@126.com
          Struts.properties.xml
          這個文件放在哪個目錄下的啊?
          能發份完整的jar包和源代碼給我嗎~
          謝了啊
          ww13515517287@126.com

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2009-04-03 12:54 by 897197468
          相見恨晚啊,不知道怎么感謝你才好

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2009-12-24 13:24 by 您好
          能把源代碼給我嗎?謝謝了啊
          lijinhua_java@yahoo.com.cn

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2011-10-17 18:03 by 李曉軍
          你好:

          我最近在學習Struts2,你能把源碼給我發一份嗎?非常感謝

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2011-10-17 18:04 by 李曉軍
          剛才忘了留Email了,921997384@qq.com ,謝謝了

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)[未登錄]  回復  更多評論   

          2011-10-24 16:38 by dd
          您好,能不能把源碼給我發一份?365092979@qq.com

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)[未登錄]  回復  更多評論   

          2012-06-13 10:22 by 你好
          謝謝

          # re: Struts2+Spring2+Hibernate3 web應用示例(六)  回復  更多評論   

          2012-12-04 09:38 by Awy
          你好樓主,不知道你還在不,能不能把源碼發給我一份。謝謝
          我的郵箱是495917320@qq.com
          主站蜘蛛池模板: 靖远县| 海宁市| 合山市| 西盟| 当阳市| 凤台县| 南郑县| 兴仁县| 文水县| 萨嘎县| 婺源县| 青川县| 云龙县| 库车县| 岚皋县| 福海县| 乌兰县| 铁岭市| 新闻| 叙永县| 青神县| 湘阴县| 桓台县| 象山县| 柏乡县| 饶平县| 丹东市| 通道| 光泽县| 潼关县| 龙口市| 隆安县| 莎车县| 通化县| 治县。| 罗平县| 行唐县| 锡林郭勒盟| 家居| 宝山区| 上犹县|