使用Spring MVC显示图像和文本(来自数据库)

San*_*ejű 2 java spring jsp image

我想使用Spring MVC 3 显示图像字符串.两者都是我使用Hibernate从数据库中检索的POJO的实例变量.

@Entity
@Table(name = "document")
public class Document {

    //id        

    @Column(name = "name")
    private String name;  // the String

    @Basic(fetch = FetchType.LAZY)
    @Column(name="content")
    private byte [] image;
//getters setters
Run Code Online (Sandbox Code Playgroud)

我想显示使用Spring MVC 3 .jsp页面上的图像显示旁边的字符串.目前我只能通过流式传输并将字符串打印到控制台来显示图片,但这不是我想要的.(当然我可以显示字符串,但是如果我显示字符串,那么我就无法显示图像.)我想在同一页面上同时显示两者.

@RequestMapping(value = "/displayDocument", method = RequestMethod.POST)
    public void displayDocument(@RequestParam("documentId") String documentId, HttpServletResponse response) {

        Document doc = documentService.get(Long.valueOf(documentId));

        System.out.println(doc.getName());

        if (doc.getImage() != null) {
            response.setContentType("image/jpg");
            try {
                response.getOutputStream().write(doc.getImage());
                response.getOutputStream().flush();
                response.getOutputStream().close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

    }
Run Code Online (Sandbox Code Playgroud)

我不想相信没有任何聪明的解决办法来实现这一目标....

Ras*_*nke 5

我认为你对http协议的工作原理有点误解.图像总是在通过web浏览器自动一个单独的请求获取(这也无二<script>,<style>,<img>和一些其他的标记).所以基本上,你想构建一个JSP页面,你可以在其中显示名称

<img src="/viewimage?id=${theDocumentId}"/>.

viewimage可能是您提供图像的servlet.