JSON对象的处理
简述@ResponseBody注解的用法
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。@ResponseBody都会在异步获取数据时使用,被其标注的处理方法返回的数据将输出到相应流中,客户端获取并显示数据。
解决JSON数据传递的中文乱码问题 原因: 消息转换器(StringHttpMessageConverter)中固定了转换字符编码为“ISO-8859-1” 解决方案一: @RequestMapping(value="/view", method=RequestMethod.GET, produces={"application/json;charset=UTF-8"}) 简单实用,并可做到灵活处理
解决方案二 装配消息转换器StringHttpMessageConverter,设置字符编码为UTF-8 supportedMediaTypes属性 指定媒体类型:application/json 字符编码:UTF-8 一次配置,永久搞定
解决JSON数据传递的日期格式问题
日期格式:时间戳 “yyyy-MM-dd” 解决方案一: 注解方式:@JSONField(format= "yyyy-MM-dd")
解决方案二
配置FastJson的消息转换器-FastJsonHttpMessageConverter 设置features属性:指定输出时的日期转换器为WriteDateUseDateFormat FastJson规定了默认的返回日期类型DEFFAULT_DATE_FORMAT:yyyy-MM-dd HH:mm:ss故对于特殊类型字段,可使用@JSONField来控制
对于JSON数据中的日期格式处理(FastJson) 默认输出时间戳 转换输出yyyy-MM-dd HH:mm:ss格式的日期 配置消息转换器中的<value>WriteDateUseDateFormat</value> 注解优先( yyyy-MM-dd ) 配置消息转换器中的<value>WriteDateUseDateFormat</value> 增加属性注解@JSONField(format="yyyy-MM-dd")
配置多视图解析器2
<property name="mediaTypes">
<map> <entry key="html" value="text/html;charset=UTF-8"/>
<entry key="json" value="application/json;charset=UTF-8"/>
<entry key="xml" value="application/xml;charset=UTF-8"/>
</map>
</property>
ContentNegotiatingViewResolver favorParameter 默认为true,表示支持参数匹配,可以根据请求参数的值确定MIME类型,默认的请求参数为format,如: /user/view?id=12&format=json mediaTypes 根据请求参数值和MIME类型的映射列表 viewResolvers 网页视图解析器
通过ContentNegotiatingViewResolver,其中就达到了同一资源根据相同的URL地址访问,并通过设置MIME格式控制器端返回的数据格式,从而获取不同形式的返回内容。其实这REST的编程风格。
数据转换和格式化
在Spring MVC中时间数据无法实现自动转换绑定 解决方案 必须要进行手动配置自定义数据类型的绑定才能实现该功能 数据转换和格式化
数据绑定流程
DataBinder 数据绑定的核心部件 核心调度 ConversionService Spring类型转换体系的核心接口 解决前台form表单中时间字符串到后台Date数据类型的转换问题 配置了<mvc:annotation-driven/>标签,并没有配置ConversionService,也能通过格式化注解来解决日期的转换问题 <mvc:annotation-driven/>标签 DefaultAnnotationHandlerMapping AnnotationMethodHandlerAdapter FormattingConversionServiceFactoryBean
注意:标注了@InitBinder注解的方法会在控制器初始化时调用
SSM框架整合
新建Web Project,导入相关jar文件
配置web.xml
配置文件(/resources) database.properties
log4j.properties
mybatis-config.xml
配置typeAliases
设置全局性懒加载
applicationContext-mybatis.xml
springmvc-servlet.xml
applicationContext-mybatis.xml
数据源相关配置
事务管理
配置SqlSessionFactoryBean
配置MapperScannerConfigurer
springmvc-servlet.xml
配置<mvc:annotation-driven/>标签(包括消息转换器配置)
通过<mvc:resources/>标签配置静态文件访问
配置支持文件上传- multipartResolver
配置多视图解析器-ContentNegotiatingViewResolver
配置拦截器-interceptors
基于HandlerMapping,对请求实施拦截,根据业务需求,基于不同的HandlerMapping定义多个拦截器
HandlerInterceptor接口 preHandle() postHandle() afterCompletion()
自定义拦截器的配置-SysInterceptor