gpt4 book ai didi

mysql - 如何使用 Hibernate 在 Struts 2 中的 mySql DB 的 jsp 页面中显示图像(blob 类型)

转载 作者:可可西里 更新时间:2023-11-01 08:52:49 25 4
gpt4 key购买 nike

我面临一个问题,如何使用 Hibernate 在 Struts 2 中的 mySql DB 的 jsp 页面中显示图像(blob 类型)?请分享您的观点。提前致谢。

    public byte[] getrepImagechange2(int loginid) {

Criteria criteria = null;
byte[] repCurrentImage = null;

try {
session = sessionFactory.openSession();
criteria = session.createCriteria(Membersdetails.class).add(Expression.eq("logintable.loginId", loginid));
List list = criteria.list();
Iterator itr = list.iterator();
if (itr.hasNext()) {

Membersdetails get = (Membersdetails) itr.next();
repCurrentImage = get.getRepPicture();

HttpServletResponse response23 = ServletActionContext.getResponse();
response23.setContentType("image/jpg");
OutputStream out = response23.getOutputStream();
out.write(repCurrentImage);
out.close();

}
} catch (Exception e) {
System.out.println("Exception in getrepImage() :" + e);
} finally {
try {

session.flush();
session.close();
} catch (Exception e) {
System.out.println("Exception in getrepImage resource closing :" + e);
}
}
return repCurrentImage;
}
And I am displaying this image in jsp page in a table cell using this code :
<img src="<s:property value="bs"/>"

最佳答案

我使用以下内容从 JPA(Hibernate Backed)渲染图像,示例使用 struts2-conventions-plugin,在结果类型注释中“stream”是 View 的全部内容:

package com.kenmcwilliams.photogallery.action.gallery;

import com.kenmcwilliams.photogallery.orm.Picture;
import com.kenmcwilliams.photogallery.orm.PictureDetails;
import com.kenmcwilliams.photogallery.service.Gallery;
import com.opensymphony.xwork2.ActionSupport;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import org.apache.struts2.convention.annotation.Result;
import org.springframework.beans.factory.annotation.Autowired;

@Result(type = "stream", params = {
"contentType", "${contentType}",
"contentLength", "${contentLength}",
"contentDisposition", "${contentDisposition}",
"inputStream", "${inputName}",
"bufferSize", "${bufferSize}",
"allowCaching", "${allowCaching}"
})
public class Stream extends ActionSupport {
@Autowired private Gallery gallery;
private String contentType = "text/plain";
private int contentLength = 0;
private String contentDisposition = "inline";
private InputStream inputStream;
public String inputName = "inputStream";//This should not be required
private Integer bufferSize = 1024;
private String allowCaching = "true";
private Integer id = null;

@Override
public String execute() {
if (id != null){
//gallery.get
PictureDetails details = gallery.getPictureDetails(id);
Picture photo = details.getPictureId();
this.contentType = details.getContentType();
System.out.println("Content Type: " + contentType);
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(photo.getPicture());
this.contentLength = photo.getPicture().length;
System.out.println("Content Length: " + contentLength);
this.inputStream = byteArrayInputStream;
}else{
return ERROR;
}
return SUCCESS;
}

/**
* @return the contentType
*/
public String getContentType() {
return contentType;
}

/**
* @param contentType the contentType to set
*/
public void setContentType(String contentType) {
this.contentType = contentType;
}

/**
* @return the contentLength
*/
public int getContentLength() {
return contentLength;
}

/**
* @param contentLength the contentLength to set
*/
public void setContentLength(int contentLength) {
this.contentLength = contentLength;
}

/**
* @return the contentDisposition
*/
public String getContentDisposition() {
return contentDisposition;
}

/**
* @param contentDisposition the contentDisposition to set
*/
public void setContentDisposition(String contentDisposition) {
this.contentDisposition = contentDisposition;
}

/**
* @return the bufferSize
*/
public int getBufferSize() {
return bufferSize;
}

/**
* @return the allowCaching
*/
public String getAllowCaching() {
return allowCaching;
}

/**
* @param allowCaching the allowCaching to set
*/
public void setAllowCaching(String allowCaching) {
this.allowCaching = allowCaching;
}

/**
* @return the inputStream
*/
public InputStream getInputStream() {
return inputStream;
}

/**
* @param inputStream the inputStream to set
*/
public void setInputStream(InputStream inputStream) {
this.inputStream = inputStream;
}

/**
* @return the id
*/
public int getId() {
return id;
}

/**
* @param id the id to set
*/
public void setId(int id) {
this.id = id;
}
}

您还询问了如何显示上面的内容,下面是一个用于显示图片库的 JSP(因此该操作将为该 JSP 提供图像 ID,上面的操作将使用这些图像 ID 从数据库中获取图片,并且画廊的标题)。

如果我没记错的话,这个图库显示了四张图片,每行的行数足以显示所有图片。

<%@taglib prefix="s" uri="/struts-tags"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<h1><s:property value="photoGallery.name"/></h1>
<table>
<s:iterator begin="0" end="pictureDetails.size/4" var="row">
<tr>
<s:subset source="pictureDetails" start="4 * #row" count="4">
<s:iterator>
<s:url forceAddSchemeHostAndPort="true" namespace="/gallery" action="stream" var="streamURL">
<s:param name="id" value="id"/>
</s:url>
<td>
<s:a value="%{#streamURL}"><img width="200px" src="<s:property value="#streamURL"/>"/></s:a>
</td>
</s:iterator>
</s:subset>
</tr>
</s:iterator>
</table>
</body>
</html>

上面这一行大概是这部分大概是你想要的:

<img width="200px" src="<s:property value="#streamURL"/>"/>

关于mysql - 如何使用 Hibernate 在 Struts 2 中的 mySql DB 的 jsp 页面中显示图像(blob 类型),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10330503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com