自定义HttpMessageConverter

来源:互联网 发布:帮开淘宝店铺 编辑:程序博客网 时间:2024/05/21 08:41

HttpMessageConverter是用来处理request和response里的数据的,我们可以自定义,用于类型转换。

自定义对象和字符串之间的转换:

public class MyMessageConverter extends AbstractHttpMessageConverter<DemoObj> {    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<? extends DemoObj> 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());    }}
添加自定义converter:

@Overridepublic void extendMessageConverters(List<HttpMessageConverter<?>> converters) {    converters.add(converter());}
示例:

@Controllerpublic class ConverterController {    //接收字符串转化为对象,然后把对象又转化为字符串输出。    @RequestMapping(value="/convert",produces = {"application/x-wisely"})    public @ResponseBody DemoObj convert(@RequestBody DemoObj demoObj){        return demoObj;    }}
<body>    <div id="resp"></div><input type="button" onclick="req();" value="请求"/>    <script src="assets/js/jquery.js" type="text/javascript"></script>    <script>        function req() {            $.ajax({                url:"convert",                data:"1-wangyunfei",                type:"POST",                contentType:"application/x-wisely",                success:function (data) {                    $("#resp").html(data);                }            });        }    </script></body>

原创粉丝点击