spring-mvc注解(mvc:annotation-driven,JSON,配置详解)
来源:互联网 发布:格罗滕迪克 知乎 编辑:程序博客网 时间:2024/05/21 09:27
spring-mvc注解(mvc:annotation-driven,JSON,配置详解)
一.DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter 的使用已经过时!
spring 3.1 开始我们应该用
RequestMappingHandlerMapping 来替换 DefaultAnnotationHandlerMapping,
用 RequestMappingHandlerAdapter 来替换 AnnotationMethodHandlerAdapter。
二.annotation-driven详解
<mvc:annotation-driven /> 会自动注册RequestMappingHandlerMapping、RequestMappingHandlerAdapter 与ExceptionHandlerExceptionResolver 三个bean。
还将提供以下支持:
- 支持使用 ConversionService 实例对表单参数进行类型转换;
- 支持使用 @NumberFormat annotation、@DateTimeFormat;
- 注解完成数据类型的格式化;
- 支持使用 @Valid 注解对 JavaBean 实例进行 JSR 303 验证;
- 支持使用 @RequestBody 和 @ResponseBody 注解;
- 当使用mvc:view-controller标签时一定要加入mvc:annotation-driven,不然会使requestMapping失效。
- 当为了处理静态资源问题而加入mvc:default-servlet-handler时,也一定要加入mvc:annotation-driven,不然requestMapping同样会失效。
- 当使用自定义类型转换器的时候需要加上mvc:annotation-driven标签。
三.手动配置驱动和JSON,不使用驱动注解MVC:annotation-driven
手动配置,不使用<mvc:annotation-driven />
设计:手工指定RequestMappingHandlerMapping和RequestMappingHandlerAdapter,并给RequestMappingHandlerAdapter的messageConverters的注入属性值.不使用驱动注解(<mvc:annotation-driven />)自动配置的原因是:自动配置我没找到方法来修改response的Content-Type, 而自动配置默认的content-type是application/json;charset=UTF-8.这个contentType在谷歌浏览器很正常解析,而到了IE解析为弹出下载了,IE10,IE11一样不给面子!!!如果将contentType改为:text/html;charset=UTF-8.那IE和google浏览器都能正常解析了.
不用再去写<mvc:annotation-driven />,至于<mvc:annotation-driven />在背后做了什么,可看参考手册.注意spring版本哦,这两类从3.1才开始有的.
基于xml配置:
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
- <property name="messageConverters">
- <list>
- <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
- <property name="supportedMediaTypes">
- <list>
- <value>text/html;charset=UTF-8</value>
- <value>application/json;charset=UTF-8</value>
- </list>
- </property>
- </bean>
- </list>
- </property>
- </bean>
基于Java-config方式会更加简单一点,先让你的mvc配置继承WebMvcConfigurerAdapter,再重写configureMessageConverters方法,加入jackson包,在controller使用@ResponseBody注解,OK!
如果要全局支持jsonp(支持jsonp的做法:可以在controller的方法返回String类型,接收一下callback,然后callback调用一下json结果就可以),可以再加一个StringHttpMessageConverter,不仅能解决中文乱码,还能把json里面的换行\r\n去掉.
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
- <property name="messageConverters">
- <list>
- <bean class="org.springframework.http.converter.StringHttpMessageConverter">
- <property name="supportedMediaTypes">
- <list>
- <value>text/html; charset=UTF-8</value>
- <value>application/json;charset=UTF-8</value>
- </list>
- </property>
- </bean>
- <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
- <property name="supportedMediaTypes">
- <list>
- <value>text/html; charset=UTF-8</value>
- <value>application/json;charset=UTF-8</value>
- </list>
- </property>
- </bean>
- </list>
- </property>
- </bean>
- spring-mvc注解(mvc:annotation-driven,JSON,配置详解)
- <mvc:annotation-driven />注解详解
- 【Spring MVC】<mvc:annotation-driven/>详解
- Spring: <mvc:annotation-driven />注解意义
- spring <mvc:annotation-driven />注解意义
- Spring mvc:annotation-driven
- <mvc:annotation-driven>配置
- spring注解配置<mvc:annotation-driven />与<context:annotation-config />区别
- Spring MVC配置文件的三个常用配置详解(annotation-config,annotation-config,annotation-driven)
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven />注解意义
- <mvc:annotation-driven/>注解意义
- <mvc:annotation-driven />注解意义
- 人月神话之第一章焦油坑
- 泛型接口类
- java锁的种类
- Kana Dict 第一版发布
- Distributed System: MapReduce 可调参数与优化方向
- spring-mvc注解(mvc:annotation-driven,JSON,配置详解)
- sbt默认目录结构
- 数据库之jdbc
- “改变”之意易混单词详解
- AngularJS下拉列表动态获取
- QML做类似Android圆形头像
- Discuz!开发之消息提示函数showmessage()分析及用法实例
- vector
- spring mvc <mvc:annotation-driven>配置使用出现问题