自定义HttpMessageConverter

╰半橙微兮° 2022-06-12 01:47 244阅读 0赞

1.继承AbstractHttpMessageConverter类

2.构造函数新建媒体类型

3.重写readInternal方法,处理请求参数

4.重写supports方法,表示该MessageConverter只处理该对象

5.重写writeInternal方法,处理数据输出到页面上

  1. package com.lebron.springmvc;
  2. import java.io.IOException;
  3. import java.nio.charset.Charset;
  4. import org.springframework.http.HttpInputMessage;
  5. import org.springframework.http.HttpOutputMessage;
  6. import org.springframework.http.MediaType;
  7. import org.springframework.http.converter.AbstractHttpMessageConverter;
  8. import org.springframework.http.converter.HttpMessageNotReadableException;
  9. import org.springframework.http.converter.HttpMessageNotWritableException;
  10. import org.springframework.util.StreamUtils;
  11. public class MyDateMessageConverter extends AbstractHttpMessageConverter<MyDate>{
  12. public MyDateMessageConverter(){
  13. super(new MediaType("application", "my-date", Charset.forName("UTF-8")));
  14. }
  15. @Override
  16. protected MyDate readInternal(Class<? extends MyDate> clazz, HttpInputMessage inputMessage) throws IOException, HttpMessageNotReadableException {
  17. String temp = StreamUtils.copyToString(inputMessage.getBody(), Charset.forName("UTF-8"));
  18. String[] tempArr = temp.split("/");
  19. return new MyDate(new Integer(tempArr[0]),new Integer(tempArr[1]),new Integer(tempArr[2]));
  20. }
  21. @Override
  22. protected boolean supports(Class<?> clazz) {
  23. return MyDate.class.isAssignableFrom(clazz);
  24. }
  25. @Override
  26. protected void writeInternal(MyDate myDate, HttpOutputMessage outputMessage) throws IOException, HttpMessageNotWritableException {
  27. String out = myDate.getYear() + "/" + myDate.getMonth() + "/" + myDate.getDay();
  28. outputMessage.getBody().write(out.getBytes());
  29. }
  30. }

6.重写extendMessageConverters方法,将转换器添加到转换器链中(重写configureMessageConverters方法会覆盖内置的所有转换器,所以不推荐)

  1. @Bean
  2. public MyMessageConverter myMessageConverter(){
  3. return new MyMessageConverter();
  4. }
  5. @Override
  6. public void extendMessageConverters(List<HttpMessageConverter<?>> converters) {
  7. converters.add(new MyMessageConverter());
  8. }

-—

喜欢这篇文章的朋友,欢迎长按下图关注公众号**lebronchen**,第一时间收到更新内容。

70

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读