Spring MVC 模組功能全面,策略介面高度可配,支援 JSP、Velocity、Tiles、iText、POI 等視圖技術。核心 DispatcherServlet 分派請求,帶可配置的處理器映射、視圖解析、國際化、主題、檔案上傳。控制器介面單一方法 handleRequest,提供層次結構:表單處理繼承 AbstractFormController,多頁精靈繼承 AbstractWizardFormController。本文以銀行帳戶查詢應用實戰講解。
sampleBankingServlet,load-on-startup=1,自動載入 sampleBankingServlet-servlet.xml*.jsp 交由該 Servlet 處理/WEB-INF/sampleBanking-services.xml (服務層 Bean 定義)繼承 SimpleFormController (支援 GET 顯示表單、POST 處理提交)。注入 AuthenticationService、AccountServices:
protected ModelAndView onSubmit(Object command) throws Exception {
LoginCommand login = (LoginCommand) command;
authenticationService.authenticate(login);
AccountDetail detail = accountServices.getAccountSummary(login.getUserId());
return new ModelAndView(getSuccessView(), "accountdetail", detail);
}
<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> <!-- GET 顯示 -->
<property name="successView"><value>accountdetail</value></property> <!-- POST 成功 -->
</bean>
commandName/class 決定視圖頁面綁定的命令物件 (如 login.jsp 存取 loginCommand),提交後 onSubmit 從命令物件取得表單數據。
<bean id="viewResolver" 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>
login → /jsp/login.jsp,accountdetail → /jsp/accountdetail.jsp,使用 JSTL 標籤故 viewClass=JstlView。
<beans>
<bean id="accountServices" class="springexample.services.AccountServices"/>
<bean id="authenticationService" class="springexample.services.AuthenticationService"/>
</beans>
置於 sampleBanking-services.xml,由 ContextLoaderServlet 載入。
spring-banking 資料夾複製到 webappscatalina.bat start 啟動https://localhost:port/springbanking,見登入頁 (圖 1)admin/password 登入,見帳戶詳情頁 (圖 2)
圖 1:Spring MVC 示例登入畫面

圖 2:Spring MVC 示例帳戶詳情頁
本文示範 Spring MVC 核心流程:DispatcherServlet 配置 → 控制器繼承 SimpleFormController + 依賴注入服務 → formView/successView 邏輯視圖名 → InternalResourceViewResolver 映射 JSP → 服務層 Bean 定義 → Tomcat 部署測試。掌握此範本,即可快速構建 Spring MVC 應用。
文章來源:IBM developerWorks