本文共 1561 字,大约阅读时间需要 5 分钟。
HttpMessageConverter是用来处理request和response里的数据的,我们可以自定义,用于类型转换。
自定义对象和字符串之间的转换:
public class MyMessageConverter extends AbstractHttpMessageConverter添加自定义converter:{ public MyMessageConverter(){ //设置我们新定义的媒体类型为application/x-wisely super(new MediaType("application","x-wisely", Charset.forName("UTF-8"))); } //标明本HttpMessageConverter只处理DemoObj这个类 @Override protected boolean supports(Class aClass) { return DemoObj.class.isAssignableFrom(aClass); } //把中间用-隔开的数据转成DemoObj对象 @Override protected DemoObj readInternal(Class aClass, HttpInputMessage httpInputMessage) throws IOException, HttpMessageNotReadableException { String temp= StreamUtils.copyToString(httpInputMessage.getBody(),Charset.forName("UTF-8")); String[] tempArr=temp.split("-"); return new DemoObj(new Long(tempArr[0]),tempArr[1]); } //把DemoObj对象转化成字符串并输出到response中 @Override protected void writeInternal(DemoObj obj, HttpOutputMessage httpOutputMessage) throws IOException, HttpMessageNotWritableException { String out="hello:"+obj.getId()+"-"+obj.getName(); httpOutputMessage.getBody().write(out.getBytes()); }}
@Overridepublic void extendMessageConverters(List示例:> converters) { converters.add(converter());}
@Controllerpublic class ConverterController { //接收字符串转化为对象,然后把对象又转化为字符串输出。 @RequestMapping(value="/convert",produces = { "application/x-wisely"}) public @ResponseBody DemoObj convert(@RequestBody DemoObj demoObj){ return demoObj; }}
转载地址:http://fljqi.baihongyu.com/