自定义实现消息转换器

来源:互联网 发布:罗马帝国 知乎 编辑:程序博客网 时间:2024/06/15 06:06
自定义消息类:
package com.et.SpringMvc.TL.lesson02.Converter;import java.io.BufferedInputStream;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import org.springframework.http.HttpInputMessage;import org.springframework.http.HttpOutputMessage;import org.springframework.http.converter.AbstractHttpMessageConverter;import org.springframework.http.converter.HttpMessageNotReadableException;import org.springframework.http.converter.HttpMessageNotWritableException;public class MyMessageConverter extends AbstractHttpMessageConverter<Phone> {/** * 用来处理消息转换 */@Overrideprotected Phone readInternal(Class<? extends Phone> clazz,HttpInputMessage inputMessage) throws IOException,HttpMessageNotReadableException {// TODO Auto-generated method stubInputStream  is = inputMessage.getBody();BufferedReader br = new BufferedReader(new InputStreamReader(is));String phone = br.readLine().split("=")[1];Phone p = new Phone();p.setArea(phone.split("-")[0]);p.setNumber(phone.split("-")[1]);return p;}/** * 判断对象 */@Overrideprotected boolean supports(Class<?> clazz) {// TODO Auto-generated method stubif(clazz==Phone.class){return true;}return false;}/** * 对象返回 */@Overrideprotected void writeInternal(Phone t, HttpOutputMessage outputMessage)throws IOException, HttpMessageNotWritableException {// TODO Auto-generated method stubString strMessage = t.getArea()+"-"+t.getNumber();outputMessage.getBody().write(strMessage.getBytes("UTF-8"));}}

entity对象:

package com.et.SpringMvc.TL.lesson02.Converter;public class Phone {private String area;private String number;public String getArea() {return area;}public void setArea(String area) {this.area = area;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;}}
Action类:

package com.et.SpringMvc.TL.lesson02.Converter;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;@Controllerpublic class TestConverter {@RequestMapping(value="/TestHttpMessageConverter")public @ResponseBody Phone TestHttpMessageConverter(@RequestBody Phone phone){System.out.println(phone.getArea()+","+phone.getNumber());return phone;}}