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

來源:互聯網
上載者:User
在開始之前,請  下載這篇文章的原始碼。請參閱 參考資料 訪問 Spring 架構和 Tom cat 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 的 SimpleFormController。SimpleFormContoller 提供了顯示從 HTTP GET 請求接收到的表單的功能,以及處理從 HTTP POST 接收到的相同表單資料的功能。LoginBankController 用 AuthenticationService 和 AccountServices 服務進行驗證,並執行帳戶活動。“ 配置視圖屬性 ”一節中的 清單 5 描述了如何把 AuthenticationService 和 AccountServices 串連到 LoginBankController。 清單 4 顯示了 LoginBankController 的代碼。
  
  配置視圖屬性
  
  下面,我必須註冊在接收到 HTTP GET 請求時顯示的頁面。我在 Spring 配置中用 formView 屬性註冊這個頁面,如清單 5 所示。sucessView 屬性代表表單資料提交而且 doSubmitAction() 方法中的邏輯成功執行之後顯示的頁面。formView 和 sucessView 屬性都代表被定義的視圖的邏輯名稱,邏輯名稱映射到實際的視圖頁面。
  
  清單 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>
  
  commandClass 和 commandName 標記決定將在視圖頁面中活動的 bean。例如,可以通過 login.jsp 頁面訪問 loginCommand bean,這個頁面是應用程式的登入頁面。一旦使用者提交了登入頁面,應用程式就可以從 LoginBankController 的 onSubmit() 方法中的命令對象檢索出表單資料。
  
  視圖解析器
  
  Spring MVC 的 視圖解析器 把每個邏輯名稱解析成實際的資源,即包含帳戶資訊的 JSP 檔案。我用的是 Spring 的 InternalResourceViewResolver,如 清單 6 所示。
  
  因為我在 JSP 頁面中使用了 JSTL 標記,所以使用者的登入名稱稱解析成資源 /jsp/login.jsp,而 viewClass 成為 JstlView。
  
  驗證和帳戶服務
  
  就像前面提到的,LoginBankController 內部串連了 Spring 的 AccountServices 和 AuthenticationService。AuthenticationService 類處理銀行應用程式的驗證。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 檔案夾是一個 Web 檔案,裡麵包含 Spring MVC 應用程式範例。lib 檔案夾包含應用程式需要的 Spring 架構、與Spring 相關的 MVC 庫以及 JSTL 標記庫和 jar 檔案。
  
  要啟動 Tomcat 伺服器,請使用以下命令:
  
  cd bin C:/Tomcat 5.0/bin> catalina.bat start
  Tomcat 應當啟動並部署 Spring MVC 應用程式範例。
  
  測試應用程式
  
  要測試應用程式,請開啟 Web 瀏覽器,指向  http://localhost:tomcatport/springbanking 並用 Tomcat 伺服器實際啟動並執行連接埠替換 tomcatport。應當看到圖 1 所示的登入螢幕。輸入使用者 ID “admin”和口令“password”,並按下登入按鈕。其他使用者 ID 或口令會造成來自驗證服務的錯誤。
  
  圖 1. Spring MVC 樣本登入螢幕


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


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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.