springmvc进阶(3):mvc:annotation-driven和mvc:default-servlet-handler在springmvc中的作用
在springmvc.xml中,经常会配置<mvc:annotation-driven/>和<mvc:default-servlet-handler/>下面来看下这两个配置有什么作用吧:1、两者都不配置如果两个都没有配置,springmvc容器初始化时会默认读取DispatcherServlet.properties中的默认参数加载Handl
在springmvc.xml中,经常会配置<mvc:annotation-driven/>
和<mvc:default-servlet-handler/>
下面来看下这两个配置有什么作用吧:
1、两者都不配置
如果两个都没有配置,springmvc容器初始化时会默认读取DispatcherServlet.properties中的默认参数加载HandlerAdapter, HandlerExceptionResolver和HandlerMapping,还有其他很多默认加载项,这里就不一一列举。重点看这三项:
org.springframework.web.servlet.HandlerMapping=org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping,\
org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping
org.springframework.web.servlet.HandlerAdapter=org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter,\
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter,\
org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter
org.springframework.web.servlet.HandlerExceptionResolver=org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerExceptionResolver,\
org.springframework.web.servlet.mvc.annotation.ResponseStatusExceptionResolver,\
org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver
2、仅配置<mvc:default-servlet-handler/>
可见仅仅配置了<mvc:default-servlet-handler/>
时,框架主要注入了SimpleUrlHandlerMapping,并去掉了AnnotationMethodHandlerAdapter 和DefaultAnnotationHandlerMapping。
为什么这样?因为这里用不上AnnotationMethodHandlerAdapter 和DefaultAnnotationHandlerMapping了!当只配置<mvc:default-servlet-handler/>
时,所有请求都交给默认的servlet进行处理了,dispatchServlet也就无法发挥相应的功能了,所有这里对于处理器请求的解析和处理也就不需要了。
3、仅配置<mvc:annotation-driven/>
<mvc:annotation-driven/>
的作用:
- 注入RequestMappingHandlerAdapter替代AnnotationMethodHandlerAdapter
- 注入ExceptionHandlerExceptionResolver替代AnnotationMethodHandlerExceptionResolver
- 注入RequestMappingHandlerMapping替代DefaultAnnotationHandlerMapping
4、两者都配置
一般我们会两个同时配置
更多推荐
所有评论(0)