springMVC解决中文乱码几种方式,以及使用fastJSOn调整时间 的格式

为什么@ResponseBody向前台传JSON输数据会有乱码

首先要知道乱码的原因是在入参之前就应经决定的,就是springMVC 中HandlerMapping会找到对应的handel(即具体去处理请求的方法) ,但是请注意!在真正调用处理请的handle的来处理请求前,或者确切的说是在请求的参数未绑定到入参的方法上的时候,springMVC完成了数据转换,格式化的校验,其中数据的转换springMVC使用的是HttpMessageConvert<T>接口,主要负责将请求信息转化为一个对象(类型为T)再通过对象(类型为T)输出响应信息,用大白话说就是,我吧这个请求的信息转化成一个对象后,然后用这个对象的方法输出响应信息

举个栗子 ! StringHttpMessageConveter就是此接口的一个实现类,他就是用来将请求的信息转成String 类型的对象,然后设置响应的字符码,但是他默认的是iso-8859-1  所以返回JSON数据的时候会乱码

解决办法1  在入参的RequestMapping(producess={"application/json;charset=UTF-8"}) 这是定义了返回制定的内容类型  此时会根据http 请求中的Accept 进行匹配,如果匹配上就会以UTF-8格式转化

解决办法2  同时解决返回的数据时间的格式处理,这里使用的是fastJson

配置

<mvn:annotion-driven>

   <bean class="org.springframework.http.StringHttpMessageConverter">

        <property  name="supprotedMediaTypes">

           <list>

                <value>application/json;charset=UTF-8 </value>

           </list>

      </property>

   </bean>

<bean class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">

        <property  name="supprotedMediaTypes">

           <list>

               <value>text/html;charset=UTF-8 </value>

                <value>application/json</value>

           </list>

      </property>

     <property name="features">

         <list>

           <!--输出日期的转换器-->

            <value>WriteDataUseDataFormat</value>

         </list>

     </property>

   </bean>

如果不想加fastJson 的配置可以使用@JSONFiled(format = "yyyy-MM-dd")标注在实体类对应的时间字段上

</mvn:annotion-driven>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值