閔毓
          http://www.eshoo.com.cn 歡迎來到異客中國
          posts - 49,comments - 97,trackbacks - 0

            spring in action 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 spring in action 可插入的 MVC 架構,可以選擇是使用內置的 spring in action Web 框架還是 Struts 這樣的 Web 框架。通過策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer Pages(JSP)技術、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的視圖,所以不會強迫您只使用 JSP 技術。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。

            spring in action 的 Web MVC 框架是圍繞 DispatcherServlet 設計的,它把請求分派給處理程序,同時帶有可配置的處理程序映射、視圖解析、本地語言、主題解析以及上載文件支持。默認的處理程序是非常簡單的 Controller 接口,只有一個方法 ModelAndView handleRequest(request, response)。Spring 提供了一個控制器層次結構,可以派生子類。如果應用程序需要處理用戶輸入表單,那么可以繼承 AbstractFormController。如果需要把多頁輸入處理到一個表單,那么可以繼承 AbstractWizardFormController

            示例應用程序有助于直觀地學習這些特性。銀行應用程序允許用戶檢索他們的帳戶信息。在構建銀行應用程序的過程中,可以學到如何配置 spring in action MVC 框架和實現框架的視圖層,視圖層包括 JSTL 標記(用于顯示輸出的數據)和JavaServer Pages 技術。

          配置 spring in action MVC

          要開始構建示例應用程序,請配置 spring in action MVC 的 DispatcherServlet。請在 web.xml 文件中注冊所有配置。清單 1 顯示了如何配置 sampleBankingServlet


          清單 1. 配置 spring in action MVC DispatcherServlet
          
          <servlet>
             <servlet-name>sampleBankingServlet</servlet-name>  
             <servlet-class>
                org.springframework.we.servlet.DispatcherServlet
             <servlet-class>
             <load-on-startup>1<load-on-startup>
          <servlet>        
          

          DispatcherServlet 從一個 XML 文件裝入 spring in action 應用程序上下文,XML 文件的名稱是 servlet 的名稱后面加上 -servlet 。在這個示例中,DispatcherServlet 會從 sampleBankingServlet-servlet.xml 文件裝入應用程序上下文。

          配置應用程序的 URL

          下一步是配置想讓 sampleBankingServlet 處理的 URL。同樣,還是要在 web.xml 中注冊所有這些信息。


          清單 2. 配置想要處理的 URL
          
          <servlet-mapping>
          <servlet-name> sampleBankingServlet<servlet-name>
          <url-pattern>*.jsp</url-pattern>
          </servlet-mapping>
          

          裝入配置文件

          下面,裝入配置文件。為了做到這點,請為 Servlet 2.3 規范注冊 ContextLoaderListener 或為 Servlet 2.2 及以下的容器注冊 ContextLoaderServlet。為了保障后向兼容性,請用 ContextLoaderServlet。在啟動 Web 應用程序時,ContextLoaderServlet 會裝入 spring in action 配置文件。清單 3 注冊了 ContextLoaderServlet


          清單 3. 注冊 ContextLoaderServlet
          
          <servlet>
            <servlet-name>context>servlet-name>
            <servlet-class>
               org.springframework.web.context.ContextLoaderServlet
            </servlet-class>
          <load-on-startup>1</load-on-startup>
          </servlet>
          
          

          contextConfigLocation 參數定義了要裝入的 spring in action 配置文件,如下面的 servlet 上下文所示。

          
          <context-param>
          <param-value>contextConfigLocation</param-value>
          <param-value>/WEB-INF/sampleBanking-services.xml</param-value>
          </context-param>
          

          sampleBanking-services.xml 文件代表示例銀行應用程序服務的配置和 bean 配置。如果想裝入多個配置文件,可以在 <param-value> 標記中用逗號作分隔符。
          -------------------------------------------------------------------------------------------------------------------------

          spring in action MVC 示例

          示例銀行應用程序允許用戶根據惟一的 ID 和口令查看帳戶信息。雖然 spring in action MVC 提供了其他選項,但是我將采用 JSP 技術作為視圖頁面。這個簡單的應用程序包含一個視圖頁用于用戶輸入(ID 和口令),另一頁顯示用戶的帳戶信息。

          我從 LoginBankController 開始,它擴展了 spring in action MVC 的 SimpleFormControllerSimpleFormContoller 提供了顯示從 HTTP GET 請求接收到的表單的功能,以及處理從 HTTP POST 接收到的相同表單數據的功能。LoginBankControllerAuthenticationServiceAccountServices 服務進行驗證,并執行帳戶活動。“ 配置視圖屬性 ”一節中的 清單 5 描述了如何把 AuthenticationServiceAccountServices 連接到 LoginBankController清單 4 顯示了 LoginBankController 的代碼。

          配置視圖屬性

          下面,我必須注冊在接收到 HTTP GET 請求時顯示的頁面。我在 spring in action 配置中用 formView 屬性注冊這個頁面,如清單 5 所示。sucessView 屬性代表表單數據提交而且 doSubmitAction() 方法中的邏輯成功執行之后顯示的頁面。formViewsucessView 屬性都代表被定義的視圖的邏輯名稱,邏輯名稱映射到實際的視圖頁面。


          清單 5. 注冊 LoginBankController
            
             <bean id="loginBankController"
                   class="springexample.controller.LoginBankController">
                <property name="sessionForm"><value>true</value></property>
             <property name="commandName"><value>loginCommand</value></property>
             <property name="commandClass">
                <value>springexample.commands.LoginCommand</value>
             </property>
          
                <property name="authenticationService">
                   <ref bean="authenticationService" />
                </property>
                <property name="accountServices">
                   <ref bean="accountServices" />
                </property>
                <property name="formView">
                   <value>login</value>
                </property>
                <property name="successView">
                   <value>accountdetail</value>
                </property>
          
             </bean>
          

          commandClasscommandName 標記決定將在視圖頁面中活動的 bean。例如,可以通過 login.jsp 頁面訪問 loginCommand bean,這個頁面是應用程序的登錄頁面。一旦用戶提交了登錄頁面,應用程序就可以從 LoginBankControlleronSubmit() 方法中的命令對象檢索出表單數據。

          視圖解析器

          spring in action MVC 的 視圖解析器 把每個邏輯名稱解析成實際的資源,即包含帳戶信息的 JSP 文件。我用的是 spring in actionInternalResourceViewResolver,如 清單 6 所示。

          因為我在 JSP 頁面中使用了 JSTL 標記,所以用戶的登錄名稱解析成資源 /jsp/login.jsp,而 viewClass 成為 JstlView

          驗證和帳戶服務

          就像前面提到的,LoginBankController 內部連接了 spring in actionAccountServicesAuthenticationServiceAuthenticationService 類處理銀行應用程序的驗證。AccountServices 類處理典型的銀行服務,例如查找交易和電匯。清單 7 顯示了銀行應用程序的驗證和帳戶服務的配置。


          清單 7. 配置驗證和帳戶服務
          
          <beans>
          
             <bean id="accountServices" 
                class="springexample.services.AccountServices">
          
             </bean>
          
             <bean id="authenticationService" 
                class="springexample.services.AuthenticationService">
          
             </bean>
          
          </beans>
          

          以上服務在 sampleBanking-services.xml 中注冊,然后裝入 web.xml 文件中,就像 前面討論的那樣。控制器和服務配置好后,這個簡單的應用程序就完成了。現在我們來看看部署和測試它時會發生什么!
          -------------------------------------------------------------------------------------------------------------------------

          部署應用程序

          我把示例應用程序部署在 Tomcat servlet 容器中。Tomcat 是 Java Servlet 和 Java ServerPagest 技術的官方參考實現中使用的 servlet 容器。如果以前沒這么做過,請 下載 jakarta-tomcat-5.0.28.exe 并運行它把 Tomcat 安裝到自己喜歡的任何位置,例如 c:\tomcat5.0

          接下來,下載示例代碼 并釋放到驅動器(例如 c:\ )上。創建了 spring in action 項目的文件夾之后,打開它并把 spring in action-banking 子文件夾拷貝到 c:\tomvat5.0\webapps。spring-banking 文件夾是一個 Web 檔案,里面包含 spring in action MVC 示例應用程序。lib 文件夾包含應用程序需要的 spring in action 框架、與Spring 相關的 MVC 庫以及 JSTL 標記庫和 jar 文件。

          要啟動 Tomcat 服務器,請使用以下命令:

          cd bin C:\Tomcat 5.0\bin> catalina.bat start

          Tomcat 應當啟動并部署 spring in action MVC 示例應用程序。
          =================================================================================

          測試應用程序

          要測試應用程序,請打開 Web 瀏覽器,指向 http://localhost:tomcatport/springbanking 并用 Tomcat 服務器實際運行的端口替換 tomcatport。應當看到圖 1 所示的登錄屏幕。輸入用戶 ID “admin”和口令“password”,并按下登錄按鈕。其他用戶 ID 或口令會造成來自驗證服務的錯誤。


          圖 1. spring in action MVC 示例登錄屏幕
          Spring MVC 示例登錄屏幕的截屏

          登錄成功之后,會看到圖 2 所示的帳戶細節頁面。


          圖 2. spring in action MVC 示例帳戶細節頁面
          Spring MVC 示例帳戶細節頁面的截屏
          ================================================================================

          結束語

          在三部分的 spring in action 系列 的第三篇文章中,我介紹了 spring in action MVC 框架的特性。我演示了如何配置和開發 spring in action MVC 應用程序、如何配置 spring in action MVC 控制器和向其中插入依賴項、如何用 JavaServer Pages 技術開發應用程序視圖,以及如何把自己的頁面與 spring in action MVC 的視圖層集成。總結這篇文章時,我演示了如何在 Tomcat servlet 容器中部署應用程序以及如何在瀏覽器中測試它。

          請繼續關注 spring in action 系列 的下一篇文章。在下一篇文章中,我將介紹如何把基于 JMS 的應用程序與 spring in action 框架集成。同時,請參閱 參考資料 學習更多有關 spring in action 框架和 spring in action MVC 的內容。
          =================================================================================

          下載

          描述 名字 大小  下載方法
          Example source code, spring in action files, jar files wa-spring3-SpringProjectPart3.zip 1966 KB  FTP

          =================================================================================
          文檔選項
          將此頁作為電子郵件發送

          將此頁作為電子郵件發送

          未顯示需要 JavaScript 的文檔選項

          討論

          樣例代碼


          對此頁的評價

          幫助我們改進這些內容


          級別: 中級

          Naveen Balani , 技術架構師, Webify Solutions

          2005 年 10 月 13 日

          在 Naveen Balani 的 spring in action 系列的第 3 部分中,學習如何用 spring in action 框架開發基于 MVC 的 應用程序。

          spring in action 系列 的第 3 部分中,我介紹 spring in action MVC 框架。就像在以前的文章中一樣,我用銀行示例介紹如何建模和構建簡單的應用程序。示例應用程序包含了已經學過的一些技術(例如依賴注入),但是主要演示 spring in action MVC 的特性。

          在開始之前,請 下載這篇文章的源代碼。請參閱 參考資料 訪問 spring in action 框架和 Tomcat 5.0,運行示例需要它們。

          spring in action MVC 框架

          spring in action 框架提供了構建 Web 應用程序的全功能 MVC 模塊。使用 spring in action 可插入的 MVC 架構,可以選擇是使用內置的 spring in action Web 框架還是 Struts 這樣的 Web 框架。通過策略接口,Spring 框架是高度可配置的,而且包含多種視圖技術,例如 JavaServer Pages(JSP)技術、Velocity、Tiles、iText 和 POI。Spring MVC 框架并不知道使用的視圖,所以不會強迫您只使用 JSP 技術。Spring MVC 分離了控制器、模型對象、分派器以及處理程序對象的角色,這種分離讓它們更容易進行定制。

          spring in action 的 Web MVC 框架是圍繞 DispatcherServlet 設計的,它把請求分派給處理程序,同時帶有可配置的處理程序映射、視圖解析、本地語言、主題解析以及上載文件支持。默認的處理程序是非常簡單的 Controller 接口,只有一個方法 ModelAndView handleRequest(request, response)。Spring 提供了一個控制器層次結構,可以派生子類。如果應用程序需要處理用戶輸入表單,那么可以繼承 AbstractFormController。如果需要把多頁輸入處理到一個表單,那么可以繼承 AbstractWizardFormController

          示例應用程序有助于直觀地學習這些特性。銀行應用程序允許用戶檢索他們的帳戶信息。在構建銀行應用程序的過程中,可以學到如何配置 spring in action MVC 框架和實現框架的視圖層,視圖層包括 JSTL 標記(用于顯示輸出的數據)和JavaServer Pages 技術。



          回頁首


          配置 spring in action MVC

          要開始構建示例應用程序,請配置 spring in action MVC 的 DispatcherServlet。請在 web.xml 文件中注冊所有配置。清單 1 顯示了如何配置 sampleBankingServlet


          清單 1. 配置 spring in action MVC DispatcherServlet
          
          <servlet>
             <servlet-name>sampleBankingServlet</servlet-name>  
             <servlet-class>
                org.springframework.we.servlet.DispatcherServlet
             <servlet-class>
             <load-on-startup>1<load-on-startup>
          <servlet>        
          

          DispatcherServlet 從一個 XML 文件裝入 spring in action 應用程序上下文,XML 文件的名稱是 servlet 的名稱后面加上 -servlet 。在這個示例中,DispatcherServlet 會從 sampleBankingServlet-servlet.xml 文件裝入應用程序上下文。

          配置應用程序的 URL

          下一步是配置想讓 sampleBankingServlet 處理的 URL。同樣,還是要在 web.xml 中注冊所有這些信息。


          清單 2. 配置想要處理的 URL
          
          <servlet-mapping>
          <servlet-name> sampleBankingServlet<servlet-name>
          <url-pattern>*.jsp</url-pattern>
          </servlet-mapping>
          

          裝入配置文件

          下面,裝入配置文件。為了做到這點,請為 Servlet 2.3 規范注冊 ContextLoaderListener 或為 Servlet 2.2 及以下的容器注冊 ContextLoaderServlet。為了保障后向兼容性,請用 ContextLoaderServlet。在啟動 Web 應用程序時,ContextLoaderServlet 會裝入 spring in action 配置文件。清單 3 注冊了 ContextLoaderServlet


          清單 3. 注冊 ContextLoaderServlet
          
          <servlet>
            <servlet-name>context>servlet-name>
            <servlet-class>
               org.springframework.web.context.ContextLoaderServlet
            </servlet-class>
          <load-on-startup>1</load-on-startup>
          </servlet>
          
          

          contextConfigLocation 參數定義了要裝入的 spring in action 配置文件,如下面的 servlet 上下文所示。

          
          <context-param>
          <param-value>contextConfigLocation</param-value>
          <param-value>/WEB-INF/sampleBanking-services.xml</param-value>
          </context-param>
          

          sampleBanking-services.xml 文件代表示例銀行應用程序服務的配置和 bean 配置。如果想裝入多個配置文件,可以在 <param-value> 標記中用逗號作分隔符。



          回頁首


          spring in action MVC 示例

          示例銀行應用程序允許用戶根據惟一的 ID 和口令查看帳戶信息。雖然 spring in action MVC 提供了其他選項,但是我將采用 JSP 技術作為視圖頁面。這個簡單的應用程序包含一個視圖頁用于用戶輸入(ID 和口令),另一頁顯示用戶的帳戶信息。

          我從 LoginBankController 開始,它擴展了 spring in action MVC 的 SimpleFormControllerSimpleFormContoller 提供了顯示從 HTTP GET 請求接收到的表單的功能,以及處理從 HTTP POST 接收到的相同表單數據的功能。LoginBankControllerAuthenticationServiceAccountServices 服務進行驗證,并執行帳戶活動。“ 配置視圖屬性 ”一節中的 清單 5 描述了如何把 AuthenticationServiceAccountServices 連接到 LoginBankController清單 4 顯示了 LoginBankController 的代碼。

          配置視圖屬性

          下面,我必須注冊在接收到 HTTP GET 請求時顯示的頁面。我在 spring in action 配置中用 formView 屬性注冊這個頁面,如清單 5 所示。sucessView 屬性代表表單數據提交而且 doSubmitAction() 方法中的邏輯成功執行之后顯示的頁面。formViewsucessView 屬性都代表被定義的視圖的邏輯名稱,邏輯名稱映射到實際的視圖頁面。


          清單 5. 注冊 LoginBankController
            
             <bean id="loginBankController"
                   class="springexample.controller.LoginBankController">
                <property name="sessionForm"><value>true</value></property>
             <property name="commandName"><value>loginCommand</value></property>
             <property name="commandClass">
                <value>springexample.commands.LoginCommand</value>
             </property>
          
                <property name="authenticationService">
                   <ref bean="authenticationService" />
                </property>
                <property name="accountServices">
                   <ref bean="accountServices" />
                </property>
                <property name="formView">
                   <value>login</value>
                </property>
                <property name="successView">
                   <value>accountdetail</value>
                </property>
          
             </bean>
          

          commandClasscommandName 標記決定將在視圖頁面中活動的 bean。例如,可以通過 login.jsp 頁面訪問 loginCommand bean,這個頁面是應用程序的登錄頁面。一旦用戶提交了登錄頁面,應用程序就可以從 LoginBankControlleronSubmit() 方法中的命令對象檢索出表單數據。

          視圖解析器

          spring in action MVC 的 視圖解析器 把每個邏輯名稱解析成實際的資源,即包含帳戶信息的 JSP 文件。我用的是 spring in actionInternalResourceViewResolver,如 清單 6 所示。

          因為我在 JSP 頁面中使用了 JSTL 標記,所以用戶的登錄名稱解析成資源 /jsp/login.jsp,而 viewClass 成為 JstlView

          驗證和帳戶服務

          就像前面提到的,LoginBankController 內部連接了 spring in actionAccountServicesAuthenticationServiceAuthenticationService 類處理銀行應用程序的驗證。AccountServices 類處理典型的銀行服務,例如查找交易和電匯。清單 7 顯示了銀行應用程序的驗證和帳戶服務的配置。


          清單 7. 配置驗證和帳戶服務
          
          <beans>
          
             <bean id="accountServices" 
                class="springexample.services.AccountServices">
          
             </bean>
          
             <bean id="authenticationService" 
                class="springexample.services.AuthenticationService">
          
             </bean>
          
          </beans>
          

          以上服務在 sampleBanking-services.xml 中注冊,然后裝入 web.xml 文件中,就像 前面討論的那樣。控制器和服務配置好后,這個簡單的應用程序就完成了。現在我們來看看部署和測試它時會發生什么!



          回頁首


          部署應用程序

          我把示例應用程序部署在 Tomcat servlet 容器中。Tomcat 是 Java Servlet 和 Java ServerPagest 技術的官方參考實現中使用的 servlet 容器。如果以前沒這么做過,請 下載 jakarta-tomcat-5.0.28.exe 并運行它把 Tomcat 安裝到自己喜歡的任何位置,例如 c:\tomcat5.0

          接下來,下載示例代碼 并釋放到驅動器(例如 c:\ )上。創建了 spring in action 項目的文件夾之后,打開它并把 spring in action-banking 子文件夾拷貝到 c:\tomvat5.0\webapps。spring-banking 文件夾是一個 Web 檔案,里面包含 spring in action MVC 示例應用程序。lib 文件夾包含應用程序需要的 spring in action 框架、與Spring 相關的 MVC 庫以及 JSTL 標記庫和 jar 文件。

          要啟動 Tomcat 服務器,請使用以下命令:

          cd bin C:\Tomcat 5.0\bin> catalina.bat start

          Tomcat 應當啟動并部署 spring in action MVC 示例應用程序。



          回頁首


          測試應用程序

          要測試應用程序,請打開 Web 瀏覽器,指向 http://localhost:tomcatport/springbanking 并用 Tomcat 服務器實際運行的端口替換 tomcatport。應當看到圖 1 所示的登錄屏幕。輸入用戶 ID “admin”和口令“password”,并按下登錄按鈕。其他用戶 ID 或口令會造成來自驗證服務的錯誤。


          圖 1. spring in action MVC 示例登錄屏幕
          Spring MVC 示例登錄屏幕的截屏

          登錄成功之后,會看到圖 2 所示的帳戶細節頁面。


          圖 2. spring in action MVC 示例帳戶細節頁面
          Spring MVC 示例帳戶細節頁面的截屏


          回頁首


          結束語

          在三部分的 spring in action 系列 的第三篇文章中,我介紹了 spring in action MVC 框架的特性。我演示了如何配置和開發 spring in action MVC 應用程序、如何配置 spring in action MVC 控制器和向其中插入依賴項、如何用 JavaServer Pages 技術開發應用程序視圖,以及如何把自己的頁面與 spring in action MVC 的視圖層集成。總結這篇文章時,我演示了如何在 Tomcat servlet 容器中部署應用程序以及如何在瀏覽器中測試它。

          請繼續關注 spring in action 系列 的下一篇文章。在下一篇文章中,我將介紹如何把基于 JMS 的應用程序與 spring in action 框架集成。同時,請參閱 參考資料 學習更多有關 spring in action 框架和 spring in action MVC 的內容。




          回頁首


          下載

          描述 名字 大小  下載方法
          Example source code, spring in action files, jar files wa-spring3-SpringProjectPart3.zip 1966 KB  FTP
          關于下載方法的信息 獲取 Adobe? Reader?


          回頁首


          參考資料

          學習

          獲得產品和技術

          討論
          • 加入本文的論壇 。(您也可以通過點擊文章頂部或者底部的論壇鏈接參加討論。)

          • developerWorks blogs:加入 developerWorks 社區。
          ===============================================================================

          關于作者

          Naveen Balani 把他的大部分時間花在設計和開發基于 J2EE 的框架和產品上。他為 IBM developerWorks 撰寫了各類文章,涉及的主題有 ESB、SOA、JMS、Web 服務架構、CICS、AXIS、DB2、XML Extender、WebSphere Studio、MQSeries、Java 無線設備和 DB2 Everyplace for Palm、J2ME、MIDP、Java-Nokia、Visual Studio .Net 以及無線數據同步。可以給他發郵件,他的地址是:naveenbalani@rediffmail.com

          ================================================================================
          原文出處:http://www-128.ibm.com/developerworks/cn/java/wa-spring3/
          posted on 2005-11-09 23:59 閔毓 閱讀(4111) 評論(0)  編輯  收藏 所屬分類: Spring in action
          主站蜘蛛池模板: 射洪县| 鹿邑县| 宜城市| 孝感市| 天津市| 五台县| 金秀| 榆社县| 清水河县| 洮南市| 文化| 东方市| 新密市| 馆陶县| 南澳县| 大宁县| 仁布县| 肥西县| 宁强县| 嘉兴市| 弥渡县| 新巴尔虎右旗| 霍山县| 余庆县| 岢岚县| 娄底市| 六枝特区| 石家庄市| 龙南县| 玛沁县| 泾阳县| 滦平县| 金山区| 贡山| 桐庐县| 鄄城县| 依安县| 抚远县| 正定县| 剑川县| 宿迁市|