開發步驟
1.在web.xml中定義前端控制器DispatcherServlet來攔截用戶請求。
2.如果要以post方式提交請求,則定義包含表單數據的jsp頁面。如果是以get方式發送請求,則無需經過這一步
3.定義處理用戶請求的handler,可以實現Controller接口,或者使用@Controller注解。
這一步是必不可少的,因為DispatcherServlet是MVC的C,也就是前端控制器,該控制器負責接受請求,並將請求分發給對應的handler,即實現Contrller接口的java類,該java類負責調用后台業務邏輯代碼來處理請求。
在SpringMVC中,控制器實際上是由兩個部分共同完成的。即攔截所有用戶請求和處理請求的通用代碼都是前端控制器DispatcherServlet完成,而實際的業務控制,比如調用后台業務邏輯代碼,返回處理結果,則由Controller處理。
4.配置handler。
<!--配置handler,映射/hello請求-->
<bean name="/hello" class="com.game.HelloController">
Spring2.5后用注解來配置handler
@Controller
public class HelloController
{
@RequestMapping(value="/hello")
public ModelAndView hello()
{}
}
5.編寫視圖資源
當handler處理用戶請求結束后,通常會返回一個ModelAndView對象,該對象應該包含返回的視圖名和模型,這個試圖名就代表需要顯示的物理視圖資源。
執行流程
SpringMVC的應用開發流程實際上按照請求響應流程來開發。
1.用戶向服務器發送請求,請求被Spring的前端控制器DispatcherServlet攔截
2.DispatcherServlet對請求URL(統一資源定位符)進行解析,得到URI(請求資源標識符)。然后根據該URI,調用HandlerMapping獲得該Handler配置的所有相關的對象,包括Handler對象以及對應的攔截器,這些對象被封裝到一個HandlerExecutionChain對象當中返回
3.DispatcherServlet根據獲得Handler,選擇一個合適的HandlerAdapter。它會被用於處理多種Handler,調用Handler實際處理請求的方法。
4.提取請求中的模型數據,開始執行Handler
5.Handler執行完成后,想DispatcherServlet返回一個ModelAndView對象。
6.根據返回的ModelAndView對象,選擇一個合適的ViewResolver(視圖解析器)返回給DispatcherServlet.
7.ViewResolver結合Model和View來渲染視圖。
8.將視圖渲染結果返回給客戶端。
