springMVC筆記(四)- 不配置HandlerMapping


我們再來看一看不配置任何HandlerMapping時,框架會使用什么。

接着使用上面的配置,注釋掉那個HandlerMapping:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
 4     xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
 5     xsi:schemaLocation="
 6         http://www.springframework.org/schema/beans
 7         http://www.springframework.org/schema/beans/spring-beans.xsd
 8         http://www.springframework.org/schema/context
 9         http://www.springframework.org/schema/context/spring-context.xsd
10         http://www.springframework.org/schema/mvc
11         http://www.springframework.org/schema/mvc/spring-mvc.xsd">
12 
13     <context:component-scan base-package="com.springmvc.demo.controller" />
14     
15     <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
16     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter" /> -->
17     <!-- <mvc:default-servlet-handler/> -->
18     <!-- <mvc:annotation-driven /> -->
19     <!-- <mvc:resources location="/resource/images/" mapping="/images/**" /> -->
20     <bean id="/simpleController" class="com.springmvc.demo.controller.SimpleController"></bean>
21     
22     <!-- <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
23     </bean> -->
24     
25     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
26         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
27         <property name="prefix" value="/" />
28         <property name="suffix" value=".jsp" />
29     </bean>
30     
31     
32 </beans>

這次我們打一斷點調試一下看看使用了什么HandlerMapping:

 

可以看到注冊了兩個HandlerMapping,所以:

1.訪問/simpleController,正常

2.訪問/user/preAddUser(通過@RequestMapping注解的)也正常,因為DefaultAnnotationHandlerMapping也可以處理注解,這個還是spring3.1之前處理注解的一個類,3.1及以后改為了RequestMappingHandlerMapping這個類,查看api可以看到這個類【已經過期】,默認情況繼續使用這個類可能是為了向后兼容。

其實這是一個默認配置,位置在spring-webmvc.jar里面,如果你沒有顯式注冊一個HandlerMapping,那么就會使用org.springframework.web.servlet.DispatcherServlet.properties這個里面默認的配置,配置如下:

org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping

所以就會注冊上面兩個RequestMapping。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM