1.有什么用?
根據(jù)url找到對(duì)應(yīng)的Controller,這里的url包括訪問帶有注解的Controller纯露、靜態(tài)資源、實(shí)現(xiàn)Controller接口或接口子類的處理器代芜、實(shí)現(xiàn)Servlet接口或者接口子類的請(qǐng)求埠褪。
2.有哪些Mapping?
2.1、BeanNameUrlHandlerMapping
全名:org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping
DispatchServlet默認(rèn)的Mapping之一挤庇,根據(jù)請(qǐng)求的url與spring容器中定義的處理器bean的name屬性值進(jìn)行匹配钞速,找到對(duì)應(yīng)的處理器bean實(shí)例。如下:
<bean id = "/index.do" class = "com.company.handlers.IndexController">
且bean的名稱必須是“/”開頭嫡秕。
2.2渴语、DefaultAnnotationHandlerMapping
全名:org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
DispatchServlet默認(rèn)的Mapping之一,根據(jù)@Controller注解配置找到對(duì)應(yīng)的Controller淘菩,常用遵班。但是Spring3.2之后已經(jīng)廢棄屠升,改用:org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping潮改。
如果使用,一般和org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter配合使用腹暖。RequestMappingHandlerMapping一般與org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter配合使用汇在。
2.3、SimpleUrlHandlerMapping
全名:org.springframework.web.servlet.handler.SimpleUrlHandlerMapping
例如:
<bean id="simpleUrlAction" class="com.plateno.web.action.SimpleUrlAction" />//SimpleUrlAction需要實(shí)現(xiàn)Controller或MultiActionController接口
<bean id="lastHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
????<map>
? ? ? ? <entry key="/index.html" value-ref = "simpleUrlAction" />
? ? ? ? <entry key="/index2.html" value-ref = "simpleUrlAction" />
? ? ? ? <entry key="/login.html" value-ref = "simpleUrlAction" />
????</map>
</bean>
一般SimpleUrlHandlerMapping是配置defaultHandler為UrlFilenameViewController脏答,將請(qǐng)求的URL路徑直接轉(zhuǎn)為邏輯視圖名并返回的轉(zhuǎn)換控制器糕殉,不需要功能處理,也就不需要再寫Controller殖告,直接根據(jù)URL解析出邏輯視圖名阿蝶。比如
<bean?name="/index.do"? class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??
<bean?name="/index2/**"??class="org.springframework.web.servlet.mvc.UrlFilenameViewController"/>??
訪問/index.do直接跳轉(zhuǎn)到index.html或其他后綴的index頁面,具體index后面的后綴可通過視圖解析器配置黄绩。
也可以配置ParameterizableViewController羡洁,但是這個(gè)需要在ParameterizableViewController的property配置viewName屬性的值,比如訪問index.html頁面爽丹,需要配置
<bean?name="/parameterizableViewController.do" class="org.springframework.web.servlet.mvc.ParameterizableViewController">??
????<property name="viewName" value="index" />
</bean>??
則請(qǐng)求的/parameterizableViewController.do會(huì)直接跳到index.jsp或其他后綴的index頁面筑煮。多個(gè)請(qǐng)求辛蚊,則需要配置多個(gè)bean≌嬷伲可以根據(jù)需要修改該url要跳轉(zhuǎn)的地址袋马,但是UrlFilenameViewController只能根據(jù)配置的bean的name值進(jìn)行跳轉(zhuǎn)到name對(duì)應(yīng)的頁面。
比如不想修改請(qǐng)求地址秸应,但是響應(yīng)改為其他頁面了虑凛,則用ParameterizableViewController較為合適,而UrlFilenameViewController需要請(qǐng)求方同時(shí)要修改請(qǐng)求url灸眼。