bab*_*blu 10 jsp hibernate controller image spring-mvc
我使用Spring MVC将BLOB类型映像存储在MySQL数据库中,用于项类Item(itemId,itemName,itemPrice,itemContent,itemImage).我成功地将图像存储在数据库中但是当我试图在我的jsp中显示它时,它显示的是二进制文件,如[B @ 7fb0c025.
如何在JSP中显示正确的图像(图像存储在MySQL数据库表中)
我的模特课:
@Entity
@Table(name="item")
public class Item {
@Id
@Column(name="ItemId")
@GeneratedValue
private Integer itemId;
@Column(name="ItemName")
private String itemName;
@Column(name="ItemContent")
private String itemContent;
/*
@Column(name="ItemImage")
private ByteArray ItemImage;
*/
@Column(name="ItemPrice")
private int itemPrice;
@Column(name="ItemImage")
private byte[] itemImage;
"addItem.jsp"用于在数据库中添加项目属性和图像.
<form:form modelAttribute="itemAttribute" enctype="multipart/form-data" method="POST" action="${Url}">
<table>
    <tr>
        <td><form:label path="itemId"></form:label></td>
        <td><form:input path="itemId" type="hidden"/></td>
    </tr>
    <tr>
        <td><form:label path="itemName">ItemName:</form:label></td>
        <td><form:input path="itemName"/></td>
    </tr>
    <tr>
        <td><form:label path="itemPrice">ItemPrice:</form:label></td>
        <td><form:input path="itemPrice"/></td>
    </tr>
    <tr>
        <td><form:label path="itemContent">ItemContent:</form:label>
        <td><form:input path="itemContent"/>
    </tr>
    <tr>
        <form:label for="itemImage" path="itemImage">itemImage:</form:label>
        <form:input path="itemImage" type="file" />
    </tr>
</table>
<input type="submit" value="Save" />
</form:form>
用于显示项目属性和图像的JSP页面.类别编号:
    <tr>
        <td><form:label path="categoryName">CategoryName:</form:label></td>
        <td><form:input path="categoryName"/></td>
    </tr>
</table>
<input type="submit" value="Save" />
<table width: 100%; text-align:center">
<tr>
    <th>ItemId</th>
    <th>ItemName</th>
    <th>ItemPrice</th>
    <th>ItemFeatures</th> 
    <th>Edit</th>
    <th>Delete</th>
    <th>ItemImage</th>
</tr>
<tbody>
    <c:forEach items="${categoryAttribute.item}" var="item">
    <tr>
            <c:url var="editCUrl" value="/item/edit?bid=${categoryAttribute.categoryId}&cid=${item.itemId}" />
            <c:url var="deleteCUrl" value="/item/delete?id=${item.itemId}" />
            <td><c:out value="${item.itemId}" /></td>
            <td><c:out value="${item.itemName}"/></td>
            <td><c:out value="${item.itemPrice}"/></td>
            <td><c:out value="${item.itemContent}"/></td>
            <td><a href="${editCUrl}">EditItem</a></td>
            <td><a href="${deleteCUrl}">DeleteItem</a></td>
            <td><c:out value="${item.itemImage}"/></td>
    </tr>   
    </c:forEach>
如何正确显示存储在数据库中的图像?我想通过在JSP中显示这样的图像我做错了.但是如何在JSP中显示图像呢?
bab*_*blu 26
我终于能够在我的jsp上显示图像了.我做了什么.
我分别创建了一个这样的控制器.
@Controller
@RequestMapping("/myImage")
public class ImageController {
@Resource(name="categoryService")
private CategoryService categoryService;
@Resource(name="itemService")
private ItemService itemService;
@RequestMapping(value = "/imageDisplay", method = RequestMethod.GET)
  public void showImage(@RequestParam("id") Integer itemId, HttpServletResponse response,HttpServletRequest request) 
          throws ServletException, IOException{
    Item item = itemService.get(itemId);        
    response.setContentType("image/jpeg, image/jpg, image/png, image/gif");
    response.getOutputStream().write(item.getItemImage());
    response.getOutputStream().close();
在jsp我做到了这一点
<img src="/Project1/myImage/imageDisplay?id=${item.itemId}"/>
并且图像已成功显示.
小智 6
我在我的控制器中写下面的代码,它对我来说很好.
在我的项目中,用户包含有@Rob照片的个人资料对象.根据您的属性修改此代码.
    byte[] encodeBase64 = Base64.encode(user.getProfile().getPhoto());
    String base64Encoded = new String(encodeBase64, "UTF-8");
    mav.addObject("userImage", base64Encoded );
在JSP文件中,我编写了代码
<img src="data:image/jpeg;base64,${userImage}" />
为此,您需要common-codec jar.
此外,您可以使用自定义标签显示图像.
| 归档时间: | 
 | 
| 查看次数: | 29018 次 | 
| 最近记录: |