我正在尝试将我的应用程序中的图像作为 java.awt.BufferedImage 对象提供。当我尝试执行 GET 时,结果如下:
- Accept:image/jpeg 渲染一张有效图片
- Accept:*/* 返回 HTTP 406
这是我的 servlet-context.xml 的相关部分:
<beans:bean id="messageAdapter"
class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<beans:property name="order" value="1" />
<beans:property name="messageConverters">
<beans:array>
<beans:bean class="org.springframework.http.converter.BufferedImageHttpMessageConverter"/>
</beans:array>
</beans:property>
</beans:bean>
这是我的控制器:
@RequestMapping(value = "photo/{photoId:[0-9]+}", method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
@ResponseBody
public BufferedImage getPhoto(
@PathVariable long photoId) {
return photoService.getPhoto(photoId);
}
MediaType.IMAGE_JPEG_VALUE 是“图像/JPEG”。据我了解,*/* 的接受标头永远不会生成 HTTP 406,根据此页面,它告诉我们调用者不接受该类型的内容。
这是一个问题,因为大多数浏览器的接受标头中都有“*/*”,除非用户对接受标头进行硬编码,否则将无法查看此图像。
我在这里错过了什么吗?
提前致谢。