Controller控制器,主要負責功能處理部分:java
一、收集、驗證請求參數並綁定到命令對象;web
二、將命令對象交給業務對象,由業務對象處理並返回模型數據;spring
三、返回ModelAndView(Model部分是業務對象返回的模型數據,視圖部分爲邏輯視圖名)。mvc
還記得DispatcherServlet嗎?主要負責總體的控制流程的調度部分:app
一、負責將請求委託給控制器進行處理;eclipse
二、根據控制器返回的邏輯視圖名選擇具體的視圖進行渲染(並把模型數據傳入)。ide
所以MVC中完整的C(包含控制邏輯+功能處理)由(DispatcherServlet + Controller)組成。學習
所以此處的控制器是Web MVC中部分,也能夠稱爲頁面控制器、動做、處理器。spa
Spring Web MVC支持多種類型的控制器,好比實現Controller接口,從Spring2.5開始支持註解方式的控制器(如@Controller、@RequestMapping、@RequestParam、@ModelAttribute等),咱們也能夠本身實現相應的控制器(只須要定義相應的HandlerMapping和HandlerAdapter便可)。component
由於考慮到還有部分公司使用繼承Controller接口實現方式,所以咱們也學習一下,雖然已經不推薦使用了。
對於註解方式的控制器,後邊會詳細講,在此咱們先學習Spring2.5之前的Controller接口實現方式。
首先咱們將項目springmvc-chapter2複製一份改成項目springmvc-chapter4,本章示例將放置在springmvc-chapter4中。
你們須要將項目springmvc-chapter4/ .settings/ org.eclipse.wst.common.component下的chapter2改成chapter4,不然上下文仍是「springmvc-chapter2」。之後的每個章節都須要這麼作。
package org.springframework.web.servlet.mvc; public interface Controller { ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception; }
這是控制器接口,此處只有一個方法handleRequest,用於進行請求的功能處理,處理完請求後返回ModelAndView(Model模型數據部分 和 View視圖部分)。