SpringMVC - handlerMapping

SpringMVC.JPG

1、功能

handlerMapping是一個(gè)接口,也就是可擴(kuò)展。

handlerMapping的作用就是根據(jù)不同的請(qǐng)求去匹配對(duì)應(yīng)的Handler,也就是根據(jù)請(qǐng)求匹配一個(gè)請(qǐng)求處理器
這個(gè)過程需要兩個(gè)步驟:

  1. 第一步,需要將Handler注冊(cè)到HandlerMapping中;
  2. 分析請(qǐng)求根據(jù)規(guī)則從已注冊(cè)的Handler中匹配到對(duì)應(yīng)的Handler,即Controller。默認(rèn)情況下,SpringMvc為我們提供了幾個(gè)默認(rèn)的HandlerMapping的實(shí)現(xiàn),通過優(yōu)先級(jí)的次序決定執(zhí)行的順序。

2、運(yùn)行流程
?在基于Spring MVC的Web應(yīng)用程序中,我們可以為DispatcherServlet提供多個(gè)HandlerMapping供其使用。

  • DispatcherServlet在選用HandlerMapping的過程中,將根據(jù)我們所指定的一系列HandlerMapping的優(yōu)先級(jí)進(jìn)行排序,然后優(yōu)先使用優(yōu)先級(jí)在前的HandlerMapping。
  • 如果當(dāng)前的HandlerMapping能夠返回可用的Handler,DispatcherServlet則使用當(dāng)前返回的Handler進(jìn)行Web請(qǐng)求的處理,而不再繼續(xù)詢問其他的HandlerMapping。
  • 否則,DispatcherServlet將繼續(xù)按照各個(gè)HandlerMapping的優(yōu)先級(jí)進(jìn)行詢問,直到獲取一個(gè)可用的Handler為止。

3、源碼

public interface HandlerMapping {
 
    String PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE = HandlerMapping.class.getName() + ".pathWithinHandlerMapping";
 
    String BEST_MATCHING_PATTERN_ATTRIBUTE = HandlerMapping.class.getName() + ".bestMatchingPattern";
 
    String INTROSPECT_TYPE_LEVEL_MAPPING = HandlerMapping.class.getName() + ".introspectTypeLevelMapping";
 
    String URI_TEMPLATE_VARIABLES_ATTRIBUTE = HandlerMapping.class.getName() + ".uriTemplateVariables";
 
    String PRODUCIBLE_MEDIA_TYPES_ATTRIBUTE = HandlerMapping.class.getName() + ".producibleMediaTypes";
 
    public abstract HandlerExecutionChain getHandler(HttpServletRequest request) throws Exception;
 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評(píng)論 18 139
  • 前言 對(duì)于Spring MVC項(xiàng)目搭建相信大家按照網(wǎng)上教程來做基本都會(huì),但更多時(shí)候我們應(yīng)該多問幾個(gè)為什么,多思考實(shí)...
    九風(fēng)萍舟閱讀 2,782評(píng)論 0 12
  • 0 系列目錄# WEB請(qǐng)求處理 WEB請(qǐng)求處理一:瀏覽器請(qǐng)求發(fā)起處理 WEB請(qǐng)求處理二:Nginx請(qǐng)求反向代理 W...
    七寸知架構(gòu)閱讀 4,379評(píng)論 3 55
  • Spring系列文章 Spring框架-1(基礎(chǔ))Spring框架-2(IOC上)Spring框架-3(IOC下)...
    zhonj閱讀 2,302評(píng)論 1 10
  • 今天大腦有點(diǎn)短路,手機(jī)拿出來,竟不知該從何說起。寫什么,怎么寫,一點(diǎn)思路都沒有,寫了刪,刪了又寫,半個(gè)鐘頭下來,終...
    dxnb閱讀 589評(píng)論 0 1