springmvc簡(jiǎn)介
文章出處:http://www.dipdnbxp.cn 作者:興邦開發(fā)部 人氣: 發(fā)表時(shí)間:2016年03月18日
springmvc簡(jiǎn)介
Spring為展現(xiàn)層提供了一個(gè)優(yōu)秀的Web框架--Spring mvc。和眾多其他Web框架一樣,它基于MVC設(shè)計(jì)理念。
Spring MVC框架圍繞DispacherServlet這個(gè)核心展開,DispatcherServlet是Spring mvc的總導(dǎo)演,總策劃,它負(fù)責(zé)截獲請(qǐng)求并將其分派給相應(yīng)的處理器處理。Spring mvc框架包括注解驅(qū)動(dòng)控制器,請(qǐng)求及響應(yīng)的信息處理,試圖解析,本地化解析,上傳文件解析,異常處理以及表單標(biāo)簽綁定等內(nèi)容。
和大多數(shù)Web mvc框架一樣,SpringMVC通過一個(gè)前端Servlet接收所有請(qǐng)求,并將具體工作委托給其他組件進(jìn)行處理,DispatcherServlet就是Spring mvc的前端Servlet。下面對(duì)Spring mvc處理請(qǐng)求做一個(gè)概述:
1:整個(gè)過程始于客戶端發(fā)出一個(gè)HTTP請(qǐng)求,Web應(yīng)用服務(wù)器接收到這個(gè)請(qǐng)求,如果匹配DispatcherServlet的請(qǐng)求映射路徑(web.xml下指定),Web容器將該請(qǐng)求轉(zhuǎn)交給DispatcherServlet處理。
2:DispatcherServlet接收到請(qǐng)求后,將根據(jù)請(qǐng)求信息(包括URL,HTTP方法等)及HandlerMapping的配置找到處理請(qǐng)求的處理器(Handler)??蓪andlerMapping看成是路由器,將Handler看成是目標(biāo)主機(jī)。值得注意的是:Spring mvc中并沒有定義一個(gè)Handler接口,實(shí)際上任何一個(gè)Object都可以成為請(qǐng)求的處理器。
3:當(dāng)DispatcherServlet根據(jù)HandlerMapping得到對(duì)應(yīng)當(dāng)前請(qǐng)求的Handler后,通過HandlerAdapter的Handler進(jìn)行封裝,再以統(tǒng)一的適配器接口調(diào)用Handler。HandlerAdapter是Spring mvc的框架級(jí)接口,顧名思義HandlerAdapter是一個(gè)適配器,它用統(tǒng)一的接口對(duì)各種Handler方法進(jìn)行調(diào)用。
4:處理器完成業(yè)務(wù)邏輯的處理后將返回一個(gè)ModelAndView給DsipatcherServlet,ModelAndView包含了試圖邏輯名和模型數(shù)據(jù)信息。
5:ModelAndView中包含的是“邏輯試圖名”而非真正的視圖對(duì)象,DispatcherServlet借由ViewResolver完成邏輯試圖名到真是試圖對(duì)象的解析工作。
6:當(dāng)?shù)玫秸鎸?shí)的視圖對(duì)象view后DispatcherServlet就使用這個(gè)View對(duì)象對(duì)ModelAndView中的模型數(shù)據(jù)進(jìn)行試圖渲染。
7:最終客戶端得到的相應(yīng)消息,可能是一個(gè)普通的HTML頁面,也可能是一個(gè)XML或JSON串,甚至是一張圖片或一個(gè)PDF文檔等不同的媒體形式。
以上每一步驟都包含著豐富的知識(shí)點(diǎn)。但是第一部都是要配置好在web.xml中DispatcherServlet,讓Spring mvc的心臟跳動(dòng)起來。