Вопрос по mysql – Как отобразить изображение (тип болба) на странице jsp из БД mySql в Struts 2, используя Hibernate

3

Я столкнулся с одной проблемой: как отобразить изображение (типа болба) на странице jsp из базы данных mySql в Struts 2 с помощью Hibernate? Пожалуйста, поделитесь своим мнением. Заранее спасибо.

    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"/>" 

Ваш Ответ

1   ответ
1

ked). В примере используется Struts2 -ventionstions-plugin, в аннотации типа результата «поток» - это все, что есть в представлении:

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 идентификаторы изображений, которые вышеуказанное действие будет использовать для получения изображений из БД и заголовка. галереи).

Если я правильно помню, эта галерея отображает четыре изображения в ширину и столько строк, сколько необходимо для отображения всех изображений.

<%@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"/>"/>
Я использую приведенный выше код в своем классе действий и использую тег img в jsp для отображения цели Jitendra verma
спасибо за ваши ответы, но я не использую аннотации, я просто храню изображение. Но я не могу отобразить на странице JSP. Jitendra verma
Я не работаю с Hibernate, но я могу показать вам, как показать изображение на вашей странице, если у вас есть ImputStream с изображением в вашем действии. Vasily Komarov
Я заблокирован от stackoverfolw с 2 месяца. Может кто-нибудь сказать мне, как активировать отправку вопроса снова? пожалуйста, помогите мне ............................. дайте мне хотя бы один шанс снова Jitendra verma

Похожие вопросы