進入 Spring MVC

來源:互聯網
上載者:User

用 Spring MVC 輕鬆進行應用程式開發

文檔選項

<tr valign="top"><td width="8"><img alt="" height="1" width="8" src="//www.ibm.com/i/c.gif"/></td><td width="16"><img alt="" width="16" height="16" src="//www.ibm.com/i/c.gif"/></td><td class="small" width="122"><p><span class="ast">未顯示需要 JavaScript 的文檔選項</span></p></td></tr>


將此頁作為電子郵件發送

討論

範例代碼


層級: 中級

Naveen Balani (naveenbalani@rediffmail.com), 技術架構師, Webify Solutions

2005 年 10 月 13 日

在 Naveen Balani 的 Spring 系列的第 3 部分中,學習如何用 Spring 架構開發基於 MVC 的 應用程式。

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

在開始之前,請 下載這篇文章的原始碼。請參閱 參考資料 訪問 Spring 架構和 Tomcat 5.0,運行樣本需要它們。

Spring MVC 架構

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

Spring 的 Web MVC 架構是圍繞 DispatcherServlet 設計的,它把請求指派給處理常式,同時帶有可配置的處理常式映射、視圖解析、本地語言、主題解析以及上傳檔案支援。預設的處理常式是非常簡單的 Controller 介面,只有一個方法 ModelAndView handleRequest(request, response)。Spring 提供了一個控制器階層,可以派生子類。如果應用程式需要處理使用者輸入表單,那麼可以繼承 AbstractFormController。如果需要把多頁輸入處理到一個表單,那麼可以繼承 AbstractWizardFormController

示 例應用程式有助於直觀地學習這些特性。銀行應用程式允許使用者檢索他們的帳戶資訊。在構建銀行應用程式的過程中,可以學到如何配置 Spring MVC 架構和實現架構的視圖層,視圖層包括 JSTL 標記(用於顯示輸出的資料)和JavaServer Pages 技術。



回頁首

配置 Spring MVC

要開始構建應用程式範例,請配置 Spring MVC 的 DispatcherServlet。請在 web.xml 檔案中註冊所有配置。清單 1 顯示了如何配置 sampleBankingServlet

清單 1. 配置 Spring 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 應用程式上下文,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 設定檔。清單 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 設定檔,如下面的 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 MVC 樣本

樣本銀行應用程式允許使用者根據惟一的 ID 和口令查看帳戶資訊。雖然 Spring MVC 提供了其他選項,但是我將採用 JSP 技術作為視圖頁面。這個簡單的應用程式套件組合含一個視圖頁用於使用者輸入(ID 和口令),另一頁顯示使用者的帳戶資訊。

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

配置視圖屬性

下面,我必須註冊在接收到 HTTP GET 請求時顯示的頁面。我在 Spring 配置中用 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 MVC 的 視圖解析器 把每個邏輯名稱解析成實際的資源,即包含帳戶資訊的 JSP 檔案。我用的是 Spring 的 InternalResourceViewResolver,如 清單 6 所示。

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

驗證和帳戶服務

就像前面提到的,LoginBankController 內部串連了 Spring 的 AccountServicesAuthenticationServiceAuthenticationService 類處理銀行應用程式的驗證。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 項目的檔案夾之後,開啟它並把 spring-banking 子檔案夾拷貝到 c:/tomvat5.0/webapps。spring-banking 檔案夾是一個 網頁封存,裡麵包含 Spring MVC 應用程式範例。lib 檔案夾包含應用程式需要的 Spring 架構、與Spring 相關的 MVC 庫以及 JSTL 標記庫和 jar 檔案。

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

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

Tomcat 應當啟動並部署 Spring MVC 應用程式範例。



回頁首

測試應用程式

要測試應用程式,請開啟 網頁瀏覽器,指向 http://localhost:tomcatport/springbanking 並用 Tomcat 伺服器實際啟動並執行連接埠替換 tomcatport。應當看到圖 1 所示的登入螢幕。輸入使用者識別碼 “admin”和口令“password”,並按下登入按鈕。其他使用者識別碼 或口令會造成來自驗證服務的錯誤。

圖 1. Spring MVC 樣本登入螢幕

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

圖 2. Spring MVC 樣本帳戶細節頁面



回頁首

結束語

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

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



回頁首

下載

描述 名字 大小 下載方法
Example source code, spring files, jar files wa-spring3-SpringProjectPart3.zip 1966 KB HTTP
關於下載方法的資訊

參考資料

學習

  • 您可以參閱本文在 developerWorks 全球網站上的 英文原文。

  • “Spring 系列,第 1 部分: Spring 架構簡介”(developerWorks,2005 年 6 月)和“Spring 系列,第 2 部分: 當 Hibernate 遇上 Spring” (developerWorks,2005 年 8 月):介紹了如何用 Spring 技術構建輕量級的、健壯的 J2EE 應用程式以及如何把 Hibernate 事務與 Spring 的面向方面編程(AOP)整合形成可靠的持久性架構。
  • “AOP@Work: AOP 工具比較,第 1 部分”(Mik Kersten,developerWorks,2005 年 2 月):比較了 Spring AOP 和 AOP 架構。
  • “輕量級開發的成功秘訣,第 3 部分: Spring 露出水面”(Bruce Tate,developerWorks,2005 年 6 月):示範了 Spring 作為輕量級容器的意義。
  • “Ruby on Rails 和 J2EE:兩者能否共存?”(Aaron Rustad, developerWorks,2005 年 7 月):比較了不太為人所知的 J2EE 架構替代品,像 EJB 和 Spring。
  • Java 技術專區:有數百篇文章,覆蓋基於 Java Web 的解決方案。

獲得產品和技術

  • Spring 首頁:下載 Spring 架構。

  • Ant 首頁:下載 Apache Ant。

討論

  • 參與論壇討論。

  • 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 。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.