spring MVC 转换器的使用
来源:互联网 发布:ubuntu ss 全局翻墙 编辑:程序博客网 时间:2024/05/22 00:32
众所周知,在java WEB开发中springMVC作为一个开源的MVC框架被广大开发者所喜爱。但是对于刚刚入门的人来说,在使用控制器的时侯,只知道怎么返回页面,只是简单的配置了视图解析器以及使用Jackson2的包做json的返回。
那么当我们做文件处理的时候却只能手动将数据写到相应中去。那么如何利用返回值优雅地做字节数据的处理呢。
作为强迫症患者的我最近也是一直纠结这个问题。在看来spring源码的情况下终于找到的解决办法。利用@ResponseBody注解告诉spring MVC该返回值是放到响应体中的,然后这将不再调用试图解析做返回值的处理而是使用转换器转换数据,并将数据放到响应体中。那么了解之后是不是就有解决办法了。 下面我们来看一个json转换器的实现
下面我就来介绍这些转换器的配置
那么当我们做文件处理的时候却只能手动将数据写到相应中去。那么如何利用返回值优雅地做字节数据的处理呢。
作为强迫症患者的我最近也是一直纠结这个问题。在看来spring源码的情况下终于找到的解决办法。利用@ResponseBody注解告诉spring MVC该返回值是放到响应体中的,然后这将不再调用试图解析做返回值的处理而是使用转换器转换数据,并将数据放到响应体中。那么了解之后是不是就有解决办法了。 下面我们来看一个json转换器的实现
public abstract class AbstractJackson2HttpMessageConverter extends AbstractGenericHttpMessageConverter<Object> {public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");private static final MediaType TEXT_EVENT_STREAM = new MediaType("text", "event-stream");
可以看到它继承了AbstractGenericHttpMessageConverter<Object> 的一个抽象类,继续向上看,我们就能明白所有的转换器都实现了HttpMessageConverter<T>这个接口,如果我们想把返回的数据做定制化的处理是不是写一个自己的类去实现这个接口就好了。不过spring 的开发已经为我们写好了几个转换器,利用这些转化器基本可以实现我们的需求。下面我就来介绍这些转换器的配置
<!-- 启用注解驱动 --> <mvc:annotation-driven > <mvc:message-converters> <ref bean="BufferedImageHttpMessageConverter"/> <ref bean="ResourceHttpMessageConverter"/> <ref bean="ByteArrayHttpMessageConverter"/> </mvc:message-converters> </mvc:annotation-driven> <!-- 转换器 --> <bean id="ByteArrayHttpMessageConverter" class="org.springframework.http.converter.ByteArrayHttpMessageConverter" > </bean> <!-- 这个转换器是处理控制器返回的字节数组的--> <bean id="BufferedImageHttpMessageConverter" class="org.springframework.http.converter.BufferedImageHttpMessageConverter" /> <!-- 这个转换器是处理控制器返回的缓存图片的--> <bean id="ResourceHttpMessageConverter" class="org.springframework.http.converter.ResourceHttpMessageConverter" > <property name="defaultCharset" value="UTF-8"></property> </bean><!-- 这个转换器是处理控制器返回的Resource的对象的,这是spring的一个内部类-->
通过这些配置我们就可以实现字节流的优雅返回了//输出验证码 @RequestMapping(value = "/Pubverify-code/{id}",produces={"image/png"}) @ResponseBody public BufferedImage verify(HttpSession session) { String text = kaptcha.createText(); BufferedImage image = kaptcha.createImage(text); session.setAttribute(kaptcha.getConfig().getSessionKey(), text); session.setAttribute(kaptcha.getConfig().getSessionDate(), new Date()); return image; }
这是一个返回验证码的控制器,配置如上。
我们从浏览器访问该路径,下面是它的效果图
第一次写博文,不足之处,多多指教
本文完结。
阅读全文
0 0
- spring MVC 转换器的使用
- Spring MVC 转换器
- Spring MVC使用fastjson做消息转换器,与默认Jackson的区别
- Spring MVC 创建自定义转换器
- Spring mvc 自定义时间转换器
- Spring mvc 自定义时间转换器
- spring MVC自定义日期转换器
- Spring mvc日期Date转换器
- Spring MVC自定义类型转换器
- Spring MVC 的数据绑定、转换器、属性编辑器
- Spring MVC的HTTP请求信息转换器HttpMessageConverter
- spring MVC的使用
- Spring MVC的使用
- Spring MVC的使用
- Spring MVC 3.x 消息转换器
- Spring MVC 中,自动加载 JSON 转换器
- spring MVC (7) 定义自定义类型转换器
- spring mvc 环境Fastjson转换器jsonp请求
- Spring框架IOC,DI概念理解
- Linux文件编程,操作系统的基础知识
- Oracle中sysdba和dba的区别
- navigator相关方法
- ORA-12154: TNS 原理及故障分析
- spring MVC 转换器的使用
- Hibernate之懒加载
- 资讯精选 | 阿里知识图谱首次曝光:每天千万级拦截量_亿级别全量智能审核
- Processing was cancelled due to an interrupt.
- 渐进时间复杂度
- location对象相关方法
- The rm command
- opencv3.3出炉,与深度学习结合更密切
- Linux进程控制块(Processing Control Block)