Java 如何使用Spring+;冬眠

Java 如何使用Spring+;冬眠,java,mysql,spring,hibernate,spring-mvc,Java,Mysql,Spring,Hibernate,Spring Mvc,有人能帮忙吗,我正试图用SpringMVC+Hibernate从数据库中检索一个带有文本的图像,但失败得很惨。我可以显示一个或另一个,但不能同时显示两个(图像和文本),而且它在控制台中给了我一个错误。 错误:-getOutputStream()已为此响应调用DAO:- public List<Product> listProductsById(Integer productId) { List<Product> prod = em.createNamedQuery

有人能帮忙吗,我正试图用SpringMVC+Hibernate从数据库中检索一个带有文本的图像,但失败得很惨。我可以显示一个或另一个,但不能同时显示两个(图像和文本),而且它在控制台中给了我一个错误。 错误:-
getOutputStream()已为此响应调用
DAO:-

public List<Product> listProductsById(Integer productId) {
    List<Product> prod = em.createNamedQuery("Product.findByProductId")
            .setParameter("productId", productId).getResultList();
    return prod;
}
public byte[] loadImage(Integer productId){
    return em.find(Product.class, productId).getimage();
}
公共列表listProductsById(整数productId){
List prod=em.createNamedQuery(“Product.findByProductId”)
.setParameter(“productId”,productId).getResultList();
返回产品;
}
公共字节[]loadImage(整数productId){
返回em.find(Product.class,productId).getimage();
}
控制器:-

@RequestMapping(value = "details/{id}", method = RequestMethod.GET)
public String showProductDetails(@PathVariable("id") Integer id,
        Model model, HttpServletResponse response) throws IOException {

    List<Product> product = olss.listProductById(id);
          byte[] image = olss.loadImage(id);

           response.setContentType("image/jpeg, image/jpg, image/png, image/gif");
           response.getOutputStream().write(image);
           response.getOutputStream().flush();  
           response.getOutputStream().close();

           model.addAttribute("prodList", product);
           model.addAttribute("prodList", image);

    return "prodDetails";
}
@RequestMapping(value=“details/{id}”,method=RequestMethod.GET)
公共字符串showProductDetails(@PathVariable(“id”)整数id,
模型模型,HttpServletResponse(响应)引发IOException{
列表产品=olss.listProductById(id);
字节[]image=olss.loadImage(id);
setContentType(“image/jpeg,image/jpg,image/png,image/gif”);
response.getOutputStream().write(图像);
response.getOutputStream().flush();
response.getOutputStream().close();
model.addAttribute(“产品列表”,产品);
model.addAttribute(“prodList”,图像);
返回“prodDetails”;
}
JSP:-


欢迎来到堆栈溢出(可能还有MVC编程)。您将不会以尝试执行的方式将模型返回到视图。图像可以作为自己的响应以有效的图像格式提供,如png、gif、jpg。不是字节数组

您的图像标记将如下所示:

然后您需要设置一个单独的控制器函数来返回图像:

@RequestMapping...
public @ResponseBody byte[] productLabel(...) {
        byte[] imageByte = new byte[0];
        try {
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            ImageIO.write(img, "png", baos);
            baos.flush();
            imageByte = baos.toByteArray();
            baos.close();
        } catch(IOException e) {
            logger.error("Unable to generate Image for Shipping Label on Order "+orderId+". "+
                    e.getLocalizedMessage());
            return null;
        }
        return imageByte;
}
请注意您的想法是错误的:JSP是生成HTML的模板引擎。您没有在html页面中嵌入图像,而是定义一个带有图像路径的图像标记

   model.addAttribute("prodList", product);
   model.addAttribute("prodList", image);
也许这是你的问题。。您正在将差异值放入同一个键中


或者,为什么不将图像的文件名保存到数据库中。

在数据库中存储图像可能不是一个好的做法。若可能的话,只需将其存储在服务器上,并将路径存储在数据库中。谢谢你们的回复,但我还是不知道。当然有办法把它们显示在一起(图像和文本)。没有!我已经更新了我的答案,希望这能澄清问题。你的HTML页面是一回事,图像标签会向你的服务器发出一个单独的请求来获取图像。另外,正如另一个用户所提到的,不要将图像存储在你的数据库中,除非你对此有一个合理的解释。图像应该存储在您的文件系统中。非常感谢我现在提供的帮助,稍后会让您知道。我刚刚注意到我的问题被否决了为什么?
   model.addAttribute("prodList", product);
   model.addAttribute("prodList", image);