了解Spring MVC設(shè)計(jì)模式

MVC設(shè)計(jì)模式

MVC是 Model、View、Controller的縮寫,分別代表web應(yīng)用程序的三種指責(zé)。

  • 模型(Model):用于存儲(chǔ)數(shù)據(jù)以及處理用戶請(qǐng)求的業(yè)務(wù)邏輯
  • 視圖(view):向控制器提交數(shù)據(jù),現(xiàn)實(shí)模型中的數(shù)據(jù)
  • 控制器(Controller):根據(jù)試圖提供的請(qǐng)求判斷將請(qǐng)求和數(shù)據(jù)交給那個(gè)模型處理,將處理的有關(guān)結(jié)果交給那個(gè)視圖更新顯示。

基于Servlet的MVC模式的具體實(shí)現(xiàn)

  • 模型:一個(gè)或多個(gè)JavaBean對(duì)象,用于存儲(chǔ)數(shù)據(jù)(實(shí)體模型,由JavaBean類創(chuàng)建)和處理業(yè)務(wù)邏輯(業(yè)務(wù)模型,由一般的Java類創(chuàng)建)。
  • 視圖:一個(gè)或多個(gè)JSP頁(yè)面,向控制器提交數(shù)據(jù)和為模型提供數(shù)據(jù)顯示,JSP頁(yè)面主要是使用HTML標(biāo)記和JavaBean標(biāo)記來(lái)顯示數(shù)據(jù)。
  • 控制器:一個(gè)或多個(gè)Servlet對(duì)象,根據(jù)試圖提交的請(qǐng)求進(jìn)行控制,即將請(qǐng)求轉(zhuǎn)發(fā)給處理業(yè)務(wù)邏輯的JavaBean,并將處理結(jié)果存放到實(shí)體模型JavaBean中,輸出給視圖顯示。
    圖1

Spring MVC的工作流程

  • 客戶端請(qǐng)求提交到DispatcherServlet。
  • 由DispatcherServlet控制器尋找一個(gè)或多個(gè)HandlerMapping,找到處理請(qǐng)求的Controller。
  • DispatcherServlet將請(qǐng)求提交到Controller
  • Controller調(diào)用業(yè)務(wù)邏輯后返回ModelAndView
  • DispatcherServlet尋找一個(gè)或多個(gè)ViewResolver視圖解析器,找到ModelAndView指定的視圖
  • 視圖負(fù)責(zé)將數(shù)據(jù)顯示到客戶端
圖2

Spring MVC接口

  • DispatcherServlet:Spring MVC所有的請(qǐng)求都經(jīng)過(guò)DispatcherServlet統(tǒng)一分發(fā),在DispatcherServlet將請(qǐng)求分發(fā)給Controller之前需要借助Spring MVC提供的HandlerMapping定位到具體的Controller。
  • HandlerMapping:負(fù)責(zé)完成客戶請(qǐng)求到Controller的映射。
  • Controller:處理用戶請(qǐng)求,和Servlet扮演的角色一致,一旦Controller處理完用戶請(qǐng)求,將返回ModelAndView對(duì)象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)。
  • ViewResolver:視圖解析器,在Web應(yīng)用中負(fù)責(zé)查找View對(duì)象,從而將相應(yīng)結(jié)果渲染給客戶。

Spring NVC注解

  • @Controller:聲明某個(gè)類的實(shí)例是一個(gè)控制器
  • @RequestMapping:在基于注解的控制器類中可以為每個(gè)請(qǐng)求編寫對(duì)應(yīng)的處理方法
  • @Service
  • @Autowired

攔截器的定義

在Spring MVC框架中定義一個(gè)攔截器需要對(duì)攔截器進(jìn)行定義和配置,定義一個(gè)攔截器可以通過(guò)兩種方式:

  • 實(shí)現(xiàn)HandlerInterceptor接口或者繼承HandlerInterceptor接口
  • 實(shí)現(xiàn)WebRequestInterceptor接口或者繼承WebRequestInterCeptor接口

轉(zhuǎn)自:saojiatete

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容