SpringMVC学习笔记——数据转换之mvc:annotation-driven

本文介绍在Spring MVC中如何正确配置使@RequestMapping注解生效的方法。包括直接响应转发页面、处理静态资源及配置ConversionService时的具体配置。并解释了<mvc:annotation-driven/>的作用及其提供的支持。

以往用到的地方:
(1)配置直接响应转发的页面,加入view-controller后,@RequestMapping失效,加入annotation-driven,使之生效。

    <!-- 配置直接转发的页面 -->
    <!-- 可以直接响应转发的页面,而无需再经过 Handler处理 -->
    <mvc:view-controller path="/success" view-name="success" />

    <!-- 在实际开发中,通常都需要配置 mvc:annotation-driven 标签 -->
    <mvc:annotation-driven></mvc:annotation-driven>

(2)处理静态资源时,加入了default-servlet-handler,@RequestMapping失效,加入annotation-driven,使之生效。

    <!-- default-servlet-handler 将在 SpringMVC 上下文中定义一个 DefaultServletHttpRequestHandler, -->
    <!-- 它会对进入 DispatcherServlet 的请求进行筛查, 如果发现是没有经过映射的请求, 就将该请求交由 WEB 应用服务器默认的 -->
    <!-- Servlet 处理. 如果不是静态资源的请求,才由 DispatcherServlet 继续处理 -->
    <!-- 一般 WEB 应用服务器默认的 Servlet 的名称都是 default. -->
    <!-- 若所使用的 WEB 服务器的默认 Servlet 名称不是 default,则需要通过 default-servlet-name 属性显式指定 -->
    <mvc:default-servlet-handler />

    <!-- 只配置上面,不配置下面,将会造成@RequestMapping不好用 -->
    <mvc:annotation-driven></mvc:annotation-driven>

(3)配置conversionService的时候,需要把这个conversionService配置到annotation-drivenconversion-service的属性中。

 <!-- 只配置上面,不配置下面,将会造成@RequestMapping不好用 -->
    <mvc:annotation-driven
        conversion-service="conversionService"></mvc:annotation-driven>

    <!-- 配置 ConversionService -->
    <bean id="conversionService"
        class="org.springframework.context.support.ConversionServiceFactoryBean">
        <property name="converters">
            <set>
                <ref bean="employeeConverter" />
            </set>
        </property>
    </bean>

作用

  1. <mvc:annotation-driven/> 会自动注册RequestMappingHandlerMappingRequestMappingHandlerAdapterExceptionHandlerExceptionResolver三个bean。
  2. 提供一下支持:
    (1)支持使用 ConversionService 实例对表单参数进行类型转换
    (2)支持使用 @NumberFormat@DateTimeFormat注解完成数据类型的格式化
    (3)支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证
    (4)支持使用 @RequestBody@ResponseBody 注解

源码解读

第一种情况:springmvc.xml什么都没配置,即没有<mvc:default-servlet-handler />也没有<mvc:annotation-driven />
这里写图片描述
其中的AnnotationMethodHandlerAdapter是一个过期的类
1这里写图片描述
这个类的doc说明,在Spring3.2以后,RequestMappingHandlerAdapter完全可以代替AnnotationMethodHandlerAdapter
第二种情况:springmvc.xml只配置了<mvc:default-servlet-handler />
这里写图片描述
第三种情况:springmvc.xml配置了<mvc:default-servlet-handler /><mvc:annotation-driven />
这里写图片描述

建议

开发的时候,这个配置一定要加上。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值