<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Topquan's Blog

    分享價值----成就你我----我的博客----你的家

    進入 Spring MVC

    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 的代碼。

    清單 4. LoginBankController 擴展 SimpleFormController

    public class LoginBankController extends SimpleFormController {

       public LoginBankController(){

       }

       protected ModelAndView onSubmit(Object command) throws Exception{

          LoginCommand loginCommand = (LoginCommand) command;
          authenticationService.authenticate(loginCommand);
          AccountDetail accountdetail = accountServices.getAccountSummary(loginCommand.getUserId());
          return new ModelAndView(getSuccessView(),"accountdetail",accountdetail);
       }

       private AuthenticationService authenticationService;

       private AccountServices accountServices;

       public AccountServices getAccountServices() {
          return accountServices;
       }

       public void setAccountServices(AccountServices accountServices) {
          this.accountServices = accountServices;
       }

       public AuthenticationService getAuthenticationService() {
          return authenticationService;
       }

       public void setAuthenticationService(
             AuthenticationService authenticationService) {
          this.authenticationService = authenticationService;
       }
    }

      配置視圖屬性

      下面,必須注冊在接收到 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 所示。

    清單 6. InternalResourceViewResolver

    <bean id="view-Resolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="viewClass">
          <value>org.springframework.web.servlet.view.JstlView</value>
       </property>
       <property name="prefix"><value>/jsp/</value></property>
       <property name="suffix"><value>.jsp</value></property>
    </bean>

      因為我在 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框架的高級配置
    http://dev2dev.bea.com.cn/techdoc/2006068810.html

    posted on 2006-08-09 22:26 topquan 閱讀(329) 評論(0)  編輯  收藏 所屬分類: Spring

    主站蜘蛛池模板: 99久久免费国产特黄| 亚洲第一永久在线观看| 国产天堂亚洲国产碰碰| 德国女人一级毛片免费| 亚洲伊人久久大香线蕉在观| 美丽的姑娘免费观看在线播放| 午夜亚洲AV日韩AV无码大全| 久久国产精品萌白酱免费| 久久综合亚洲色一区二区三区| 国产伦精品一区二区三区免费迷| 亚洲熟妇丰满xxxxx| 国产成人精品123区免费视频| 亚洲AV无码成人精品区狼人影院| 国产精品公开免费视频| 日日摸夜夜添夜夜免费视频| 亚洲综合精品网站| 久久er国产精品免费观看2| 亚洲AV综合色区无码一区| 1000部国产成人免费视频| 亚洲一卡二卡三卡四卡无卡麻豆 | 中文字幕免费观看视频| 亚洲动漫精品无码av天堂| 亚洲美女免费视频| 亚洲AV成人无码网天堂| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 污污网站免费观看| 亚洲综合校园春色| 免费A级毛片无码久久版| 成人无码a级毛片免费| 亚洲乱码中文字幕小综合| 国产91久久久久久久免费| 免费无码av片在线观看| 亚洲国产成人99精品激情在线| 免费在线观看毛片| 免费无码一区二区三区| 亚洲国产午夜精品理论片在线播放| 亚洲国产成人a精品不卡在线| 无码国产精品一区二区免费式芒果 | 亚洲AV无码AV吞精久久| 亚洲欧洲∨国产一区二区三区| 69av免费视频|