自定义HttpMessageConverter

来源:互联网 发布:徐老师淘宝店的地址 编辑:程序博客网 时间:2024/06/06 19:27
1.继承AbstractHttpMessageConverter类
2.构造函数新建媒体类型
3.重写readInternal方法,处理请求参数
4.重写supports方法,表示该MessageConverter只处理该对象
5.重写writeInternal方法,处理数据输出到页面上
package com.lebron.springmvc;import java.io.IOException;import java.nio.charset.Charset;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.MediaType;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;import org.springframework.util.StreamUtils;public class MyDateMessageConverter extends AbstractHttpMessageConverter<MyDate>{    public MyDateMessageConverter(){        super(new MediaType("application", "my-date", Charset.forName("UTF-8")));    }        @Override    protected MyDate readInternal(Class<? extends MyDate> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {        String temp = StreamUtils.copyToString(inputMessage.getBody(), Charset.forName("UTF-8"));        String[] tempArr = temp.split("/");        return new MyDate(new Integer(tempArr[0]),new Integer(tempArr[1]),new Integer(tempArr[2]));    }        @Override    protected boolean supports(Class<?> clazz) {        return MyDate.class.isAssignableFrom(clazz);    }    @Override    protected void writeInternal(MyDate myDate, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {        String out = myDate.getYear() + "/" + myDate.getMonth() + "/" + myDate.getDay();        outputMessage.getBody().write(out.getBytes());    }}
6.重写extendMessageConverters方法,将转换器添加到转换器链中(重写configureMessageConverters方法会覆盖内置的所有转换器,所以不推荐)
@Beanpublic MyMessageConverter myMessageConverter(){    return new MyMessageConverter();}@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {    converters.add(new MyMessageConverter());}



原创粉丝点击