W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
ControllerClassNameHandlerMapping
類是HandlerMapping
接口的一個(gè)實(shí)現(xiàn),它是通過(guò)一個(gè)約定來(lái)解析請(qǐng)求URL及處理該請(qǐng)求的@Controller
控制器實(shí)例之間的映射關(guān)系。
請(qǐng)看下面一個(gè)簡(jiǎn)單的控制器實(shí)現(xiàn)。請(qǐng)注意留意該類的 名稱:
public class **ViewShoppingCartController** implements Controller {
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {
// 這個(gè)例子中方法的具體實(shí)現(xiàn)并不重要,故忽略。
}
}
對(duì)應(yīng)的Spring Web MVC配置文件如下所示:
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
<bean id="**viewShoppingCart**" class="x.y.z.ViewShoppingCartController">
<!-- 注入需要的依賴 -->
</bean>
ControllerClassNameHandlerMapping
會(huì)查找當(dāng)前應(yīng)用上下文中注冊(cè)的所有處理器(也即控制器)bean,并去除類名的Controller
后綴作為決定處理器映射的依據(jù)。因此,類名ViewShoppingCartController
會(huì)被映射到匹配/viewshoppingcart*
的請(qǐng)求URL上。
讓我們多看幾個(gè)例子,這樣你對(duì)于核心的思想會(huì)馬上熟悉起來(lái)(注意URL中路徑是全小寫(xiě),而Controller
控制器類名符合駝峰命名法):
WelcomeController
將映射到/welcome*
請(qǐng)求URLHomeController
將映射到/home*
請(qǐng)求URLIndexController
將映射到/index*
請(qǐng)求URLRegisterController
將映射到/register*
請(qǐng)求URL對(duì)于MultiActionController
處理器類,映射規(guī)則要稍微復(fù)雜一些。請(qǐng)看下面的代碼,假設(shè)這里的控制器都是MultiActionController
的實(shí)現(xiàn):
AdminController
將映射到/admin/*
請(qǐng)求URLCatalogController
將映射到/catalog/*
請(qǐng)求URL只要所有控制器Controller
實(shí)現(xiàn)都遵循xxxController
這樣的命名規(guī)范,那么ControllerClassNameHandlerMapping
能把你從定義維護(hù)一個(gè) 長(zhǎng)長(zhǎng)長(zhǎng) SimpleUrlHandlerMapping
映射表的重復(fù)工作中拯救出來(lái)。
ControllerClassNameHandlerMapping
類繼承自 AbstractHandlerMapping
基類。因此,你可以視它與其他HandlerMapping
實(shí)現(xiàn)一樣,定義你所需要的攔截器HandlerInterceptor
實(shí)例及其他所有東西。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: