springmvc—handlermapping三種映射方式
springmvc—handlermapping三種映射
handlermapping負(fù)責(zé)映射中央處理器轉(zhuǎn)發(fā)給controller的映射策略,簡(jiǎn)單說(shuō)就是控制中央處理器的請(qǐng)求觸發(fā)哪一個(gè)controller。
handlermapping的配置也是在springmvc的配置文件中。
三種映射方式
1.BeanNameUrlHandlerMapping(默認(rèn))
按照controller的name來(lái)映射尋找controlller,它是默認(rèn)存在的。
<!-- 配置controller --> <bean id="testController" name="/hello.do" class="com.roy.controller.TestController"/> <!-- 按照controller的name來(lái)映射尋找controlller,默認(rèn)存在的 --> <beanclass="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>
2.SimplerUrlHandlerMapping
使用簡(jiǎn)單url映射,與默認(rèn)的映射可以各自獨(dú)立存在,但是默認(rèn)的不存在的時(shí)候,配置的controller不能使用。
可以使用此映射來(lái)分類(lèi)配置controller和配置url的各自職責(zé)
<!-- 配置controller -->
<bean id="testController" class="com.roy.controller.TestController"/>
<!-- 按照url來(lái)映射 -->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/hello.do">testController</prop>
</props>
</property>
</bean>
3.contraollerClassNameHandlerMapping
控制類(lèi)的類(lèi)名控制器,訪問(wèn)時(shí)類(lèi)名首字母需要小寫(xiě),需要加入.do,直接使用controller的首字母小寫(xiě)類(lèi)名訪問(wèn)
<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"></bean>
controller中的代碼
package com.roy.controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;
public class TestController extends AbstractController {
@Override
protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
HttpServletResponse arg1) throws Exception {
System.out.println("hello controller");
return new ModelAndView("index");
}
}
三種hanlermapping的配置
- 第一種是直接默認(rèn)存在的,可以不需要在配置文件中配置;
- 第二種可以使用此映射來(lái)分類(lèi)配置controller和配置url 的各自職責(zé);
- 第三種直接使用controller的首字母小寫(xiě)類(lèi)名訪問(wèn)。
對(duì)handlermapping的理解
handlerMapping:DispatcherServlet通過(guò)handlerMapping,為請(qǐng)求的url指向?qū)?yīng)的controll,也就是在瀏覽器地址欄輸入url請(qǐng)求之后,servlet.xml的<bean>節(jié)點(diǎn)會(huì)把請(qǐng)求映射到到對(duì)應(yīng)的controll
例如


用戶(hù)在輸入hehe之后,AbcControll就會(huì)被調(diào)用到
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot實(shí)現(xiàn)反向代理的示例代碼
本文主要介紹了SpringBoot實(shí)現(xiàn)反向代理的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-06-06
Spring(二):Spring通過(guò)IOC來(lái)創(chuàng)建對(duì)象
下面小編就為大家?guī)?lái)一篇詳談Spring對(duì)IOC的理解(推薦篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2021-07-07
Java?Spring?boot日期和時(shí)間統(tǒng)一設(shè)置三種方法
時(shí)間和日期的統(tǒng)一設(shè)置在項(xiàng)目中經(jīng)常是會(huì)遇到的,下面這篇文章主要給大家介紹了關(guān)于Java?Spring?boot日期和時(shí)間統(tǒng)一設(shè)置的三種方法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-08-08
java配置多個(gè)過(guò)濾器優(yōu)先級(jí)以及幾個(gè)常用過(guò)濾器操作
這篇文章主要介紹了java配置多個(gè)過(guò)濾器優(yōu)先級(jí)以及幾個(gè)常用過(guò)濾器的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Java設(shè)計(jì)模式之責(zé)任鏈模式的示例詳解
責(zé)任鏈模式是將鏈中的每一個(gè)節(jié)點(diǎn)看做是一個(gè)對(duì)象,每個(gè)節(jié)點(diǎn)處理的請(qǐng)求均不相同,且內(nèi)部自動(dòng)維護(hù)下一個(gè)節(jié)點(diǎn)對(duì)象,當(dāng)一個(gè)請(qǐng)求從鏈?zhǔn)降氖锥伟l(fā)出時(shí),會(huì)沿著鏈的路徑依次傳遞給每一個(gè)節(jié)點(diǎn)對(duì)象。本文將通過(guò)示例和大家詳細(xì)聊聊責(zé)任鏈模式,需要的可以參考一下2022-11-11
新手小白入門(mén)必學(xué)JAVA面向?qū)ο笾鄳B(tài)
說(shuō)到多態(tài),一定離不開(kāi)其它兩大特性:封裝和繼承,下面這篇文章主要給大家介紹了關(guān)于新手小白入門(mén)必學(xué)JAVA面向?qū)ο笾鄳B(tài)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-02-02
Java?C++刷題leetcode1106解析布爾表達(dá)式
這篇文章主要為大家介紹了Java?C++刷題leetcode1106解析布爾表達(dá)式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01

