用 Spring MVC 輕松進(jìn)行應(yīng)用程序開發(fā)(轉(zhuǎn)載)

          Spring?MVC?框架。用銀行示例介紹如何建模和構(gòu)建簡(jiǎn)單的應(yīng)用程序。示例應(yīng)用程序包含了已經(jīng)學(xué)過的一些技術(shù)(例如依賴注入),但是主要演示?Spring?MVC?的特性。
            
            在開始之前,請(qǐng)?下載這篇文章的源代碼。請(qǐng)參閱?參考資料?訪問?Spring?框架和?Tomcat?5.0,運(yùn)行示例需要它們。
            
            Spring?MVC?框架
            
            Spring?框架提供了構(gòu)建?Web?應(yīng)用程序的全功能?MVC?模塊。使用?Spring?可插入的?MVC?架構(gòu),可以選擇是使用內(nèi)置的?Spring?Web?框架還是?Struts?這樣的?Web?框架。通過策略接口,Spring?框架是高度可配置的,而且包含多種視圖技術(shù),例如?JavaServer?Pages(JSP)技術(shù)、Velocity、Tiles、iText?和?POI。Spring?MVC?框架并不知道使用的視圖,所以不會(huì)強(qiáng)迫您只使用?JSP?技術(shù)。Spring?MVC?分離了控制器、模型對(duì)象、分派器以及處理程序?qū)ο蟮慕巧@種分離讓它們更容易進(jìn)行定制。
            
            Spring?的?Web?MVC?框架是圍繞?DispatcherServlet?設(shè)計(jì)的,它把請(qǐng)求分派給處理程序,同時(shí)帶有可配置的處理程序映射、視圖解析、本地語言、主題解析以及上載文件支持。默認(rèn)的處理程序是非常簡(jiǎn)單的?Controller?接口,只有一個(gè)方法?ModelAndView?handleRequest(request,?response)。Spring?提供了一個(gè)控制器層次結(jié)構(gòu),可以派生子類。如果應(yīng)用程序需要處理用戶輸入表單,那么可以繼承?AbstractFormController。如果需要把多頁輸入處理到一個(gè)表單,那么可以繼承?AbstractWizardFormController。
            
            示例應(yīng)用程序有助于直觀地學(xué)習(xí)這些特性。銀行應(yīng)用程序允許用戶檢索他們的帳戶信息。在構(gòu)建銀行應(yīng)用程序的過程中,可以學(xué)到如何配置?Spring?MVC?框架和實(shí)現(xiàn)框架的視圖層,視圖層包括?JSTL?標(biāo)記(用于顯示輸出的數(shù)據(jù))和JavaServer?Pages?技術(shù)。
            
            配置?Spring?MVC
            
            要開始構(gòu)建示例應(yīng)用程序,請(qǐng)配置?Spring?MVC?的?DispatcherServlet。請(qǐng)?jiān)?web.xml?文件中注冊(cè)所有配置。清單?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?從一個(gè)?XML?文件裝入?Spring?應(yīng)用程序上下文,XML?文件的名稱是?servlet?的名稱后面加上?-servlet?。在這個(gè)示例中,DispatcherServlet?會(huì)從?sampleBankingServlet-servlet.xml?文件裝入應(yīng)用程序上下文。
            
            配置應(yīng)用程序的?URL
            
            下一步是配置想讓?sampleBankingServlet?處理的?URL。同樣,還是要在?web.xml?中注冊(cè)所有這些信息。
            
            清單?2.?配置想要處理的?URL
            
            <servlet-mapping>
            <servlet-name>?sampleBankingServlet<servlet-name>
            <url-pattern>*.jsp</url-pattern>
            </servlet-mapping>
            
            裝入配置文件
            
            下面,裝入配置文件。為了做到這點(diǎn),請(qǐng)為?Servlet?2.3?規(guī)范注冊(cè)?ContextLoaderListener?或?yàn)?Servlet?2.2?及以下的容器注冊(cè)?ContextLoaderServlet。為了保障后向兼容性,請(qǐng)用?ContextLoaderServlet。在啟動(dòng)?Web?應(yīng)用程序時(shí),ContextLoaderServlet?會(huì)裝入?Spring?配置文件。清單?3?注冊(cè)了?ContextLoaderServlet。
            
            清單?3.?注冊(cè)?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?參數(shù)定義了要裝入的?Spring?配置文件,如下面的?servlet?上下文所示。
            
            <context-param>
            <param-value>contextConfigLocation</param-value>
            <param-value>/WEB-INF/sampleBanking-services.xml</param-value>
            </context-param>
            
            sampleBanking-services.xml?文件代表示例銀行應(yīng)用程序服務(wù)的配置和?bean?配置。如果想裝入多個(gè)配置文件,可以在?<param-value>?標(biāo)記中用逗號(hào)作分隔符。
            
            Spring?MVC?示例
            
            示例銀行應(yīng)用程序允許用戶根據(jù)惟一的?ID?和口令查看帳戶信息。雖然?Spring?MVC?提供了其他選項(xiàng),但是我將采用?JSP?技術(shù)作為視圖頁面。這個(gè)簡(jiǎn)單的應(yīng)用程序包含一個(gè)視圖頁用于用戶輸入(ID?和口令),另一頁顯示用戶的帳戶信息。
            
            我從?LoginBankController?開始,它擴(kuò)展了?Spring?MVC?的?SimpleFormController。SimpleFormContoller?提供了顯示從?HTTP?GET?請(qǐng)求接收到的表單的功能,以及處理從?HTTP?POST?接收到的相同表單數(shù)據(jù)的功能。LoginBankController?用?AuthenticationService?和?AccountServices?服務(wù)進(jìn)行驗(yàn)證,并執(zhí)行帳戶活動(dòng)。“?配置視圖屬性?”一節(jié)中的?清單?5?描述了如何把?AuthenticationService?和?AccountServices?連接到?LoginBankController。?清單?4?顯示了?LoginBankController?的代碼。
            
            配置視圖屬性
            
            下面,我必須注冊(cè)在接收到?HTTP?GET?請(qǐng)求時(shí)顯示的頁面。我在?Spring?配置中用?formView?屬性注冊(cè)這個(gè)頁面,如清單?5?所示。sucessView?屬性代表表單數(shù)據(jù)提交而且?doSubmitAction()?方法中的邏輯成功執(zhí)行之后顯示的頁面。formView?和?sucessView?屬性都代表被定義的視圖的邏輯名稱,邏輯名稱映射到實(shí)際的視圖頁面。
            
            清單?5.?注冊(cè)?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?標(biāo)記決定將在視圖頁面中活動(dòng)的?bean。例如,可以通過?login.jsp?頁面訪問?loginCommand?bean,這個(gè)頁面是應(yīng)用程序的登錄頁面。一旦用戶提交了登錄頁面,應(yīng)用程序就可以從?LoginBankController?的?onSubmit()?方法中的命令對(duì)象檢索出表單數(shù)據(jù)。
            
            視圖解析器
            
            Spring?MVC?的?視圖解析器?把每個(gè)邏輯名稱解析成實(shí)際的資源,即包含帳戶信息的?JSP?文件。我用的是?Spring?的?InternalResourceViewResolver,如?清單?6?所示。
            
            因?yàn)槲以?JSP?頁面中使用了?JSTL?標(biāo)記,所以用戶的登錄名稱解析成資源?/jsp/login.jsp,而?viewClass?成為?JstlView。
            
            驗(yàn)證和帳戶服務(wù)
            
            就像前面提到的,LoginBankController?內(nèi)部連接了?Spring?的?AccountServices?和?AuthenticationService。AuthenticationService?類處理銀行應(yīng)用程序的驗(yàn)證。AccountServices?類處理典型的銀行服務(wù),例如查找交易和電匯。清單?7?顯示了銀行應(yīng)用程序的驗(yàn)證和帳戶服務(wù)的配置。
            
            清單?7.?配置驗(yàn)證和帳戶服務(wù)
            
            <beans>
            
            <bean?id="accountServices"
            class="springexample.services.AccountServices">
            
            </bean>
            
            <bean?id="authenticationService"
            class="springexample.services.AuthenticationService">
            
            </bean>
            
            </beans>
            
            以上服務(wù)在?sampleBanking-services.xml?中注冊(cè),然后裝入?web.xml?文件中,就像?前面討論的那樣。控制器和服務(wù)配置好后,這個(gè)簡(jiǎn)單的應(yīng)用程序就完成了。現(xiàn)在我們來看看部署和測(cè)試它時(shí)會(huì)發(fā)生什么!
            
            部署應(yīng)用程序
            
            我把示例應(yīng)用程序部署在?Tomcat?servlet?容器中。Tomcat?是?Java?Servlet?和?Java?ServerPagest?技術(shù)的官方參考實(shí)現(xiàn)中使用的?servlet?容器。如果以前沒這么做過,請(qǐng)?下載?jakarta-tomcat-5.0.28.exe?并運(yùn)行它把?Tomcat?安裝到自己喜歡的任何位置,例如?c:\tomcat5.0。
            
            接下來,下載示例代碼?并釋放到驅(qū)動(dòng)器(例如?c:\?)上。創(chuàng)建了?Spring?項(xiàng)目的文件夾之后,打開它并把?spring-banking?子文件夾拷貝到?c:\tomvat5.0\webapps。spring-banking?文件夾是一個(gè)?Web?檔案,里面包含?Spring?MVC?示例應(yīng)用程序。lib?文件夾包含應(yīng)用程序需要的?Spring?框架、與Spring?相關(guān)的?MVC?庫(kù)以及?JSTL?標(biāo)記庫(kù)和?jar?文件。
            
            要啟動(dòng)?Tomcat?服務(wù)器,請(qǐng)使用以下命令:
            
            cd?bin?C:\Tomcat?5.0\bin>?catalina.bat?start
            Tomcat?應(yīng)當(dāng)啟動(dòng)并部署?Spring?MVC?示例應(yīng)用程序。
            
            測(cè)試應(yīng)用程序
            
            要測(cè)試應(yīng)用程序,請(qǐng)打開?Web?瀏覽器,指向?http://localhost:tomcatport/springbanking?并用?Tomcat?服務(wù)器實(shí)際運(yùn)行的端口替換?tomcatport。應(yīng)當(dāng)看到圖?1?所示的登錄屏幕。輸入用戶?ID?“admin”和口令“password”,并按下登錄按鈕。其他用戶?ID?或口令會(huì)造成來自驗(yàn)證服務(wù)的錯(cuò)誤。
            
            圖?1.?Spring?MVC?示例登錄屏幕


          登錄成功之后,會(huì)看到圖?2?所示的帳戶細(xì)節(jié)頁面。
            
            圖?2.?Spring?MVC?示例帳戶細(xì)節(jié)頁面
            


            結(jié)束語
            
            在三部分的?Spring?系列?的第三篇文章中,我介紹了?Spring?MVC?框架的特性。我演示了如何配置和開發(fā)?Spring?MVC?應(yīng)用程序、如何配置?Spring?MVC?控制器和向其中插入依賴項(xiàng)、如何用?JavaServer?Pages?技術(shù)開發(fā)應(yīng)用程序視圖,以及如何把自己的頁面與?Spring?MVC?的視圖層集成。總結(jié)這篇文章時(shí),我演示了如何在?Tomcat?servlet?容器中部署應(yīng)用程序以及如何在瀏覽器中測(cè)試它。

          posted on 2006-06-15 17:39 nbt 閱讀(385) 評(píng)論(0)  編輯  收藏 所屬分類: Spring框架

          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊(cè)

          收藏夾

          Java技術(shù)網(wǎng)站

          友情鏈接

          國(guó)內(nèi)一些開源網(wǎng)站

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 游戏| 静安区| 会昌县| 陆丰市| 布尔津县| 石台县| 瑞昌市| 惠水县| 张家川| 舒城县| 龙南县| 内黄县| 瑞昌市| 乐安县| 讷河市| 木兰县| 正镶白旗| 读书| 砚山县| 安阳市| 九台市| 麻江县| 霞浦县| 新竹市| 绵竹市| 阿拉善左旗| 漳州市| 大关县| 永春县| 华蓥市| 龙泉市| 宁强县| 安徽省| 蓬安县| 顺义区| 武强县| 沂源县| 县级市| 永宁县| 开远市| 六枝特区|