【问题标题】:My code does not show my images saved in blob type database in my jsp file?我的代码未在我的 jsp 文件中显示保存在 blob 类型数据库中的图像?
【发布时间】:2021-02-24 23:30:33
【问题描述】:

我有一个问题,我的 mysql 数据库中注册的图像没有显示,我有一个表,在该表之间我有一列照片,我想将它与我的其他列一起列出,但我找不到解决方案对于下面的问题,我从我的 ArrayList 方法和我的 jsp 中的调用和结果中添加代码

我班DAO的方法

public ArrayList<CitaVO> listarCitas(String cliente_idCliente) {

        CitaVO citVO = null;
        conexion = this.obtenerConexion();
        ArrayList<CitaVO> listaCitas = new ArrayList<>();
        try {
            sql = "SELECT * FROM vwcitasactivas WHERE cliente_idCliente=?";
            puente = conexion.prepareStatement(sql);
            puente.setString(1, cliente_idCliente);
            mensajero = puente.executeQuery();

            while (mensajero.next()) {
                citVO = new CitaVO(mensajero.getString(1),
                        mensajero.getString(2), mensajero.getBinaryStream(3),
                        mensajero.getString(4), mensajero.getString(5),
                        mensajero.getString(6), mensajero.getString(7),
                        mensajero.getString(8), mensajero.getString(9),
                        mensajero.getString(10), mensajero.getString(11),
                        mensajero.getString(12),cliente_idCliente);
                listaCitas.add(citVO);

            }
        } catch (Exception e) {
            Logger.getLogger(ProAgendaDAO.class.getName()).log(Level.SEVERE, null, e);
        }
        return listaCitas;

我列出结果的jsp

<%
                                                        CitaVO citVO = new CitaVO();
                                                        CitaDAO citDAO = new CitaDAO();
                                                        ArrayList<CitaVO> listaCitas = citDAO.listarCitas(idCliente);
                                                        for (int i = 0; i < listaCitas.size(); i++) {
                                                            citVO = listaCitas.get(i);

                                                    %>
                                                    <tr>
                                                        <td>
                                                            <div class="round-img">
                                                                <a href=""><img src="data:image/jpg;base64,<%=citVO.getUsuFoto()%>" alt="" width="50px" height="50px" ></a>
                                                            </div>
                                                        </td>
                                                        <td><%=citVO.getUsuNombre()%> <%=citVO.getUsuApellido()%></td>
                                                        <td><%=citVO.getUsuCiudad()%></td>
                                                        <td><%=citVO.getCitFecha()%></td>
                                                        <td><%=citVO.getProDia()%></td>
                                                        <td><%=citVO.getCitDireccion()%></td>
                                                        <td><%=citVO.getCitHoraInicio()%></td>
                                                        <td><%=citVO.getCitHoraFin()%></td>
                                                        <td <%=citVO.getCitEstado()%>><span class="badge badge-primary">Activa</span></td>
                                                        <td>
                                                            <span><a href="Cita?opcion=6&textId=<%=citVO.getIdCita()%>&textEstado=<%=citVO.getCitEstado()%>"><i class="ti-eye color-default"></i></a> </span>
                                                            <span><a href="Cita?opcion=7&textId=<%=citVO.getIdCita()%>"><i class="ti-pencil-alt color-success"></i></a></span>
                                                            <span><a href="Cita?opcion=3&textId=<%=citVO.getIdCita()%>&textEstado=<%=citVO.getCitEstado()%>" class="btn sweet-confirm" onclick="return cancelarCita(event)"><i class="ti-trash color-danger"></i> </a></span>
                                                        </td>
                                                    </tr>
                                                    <%}%>

我的jsp结果我的图像没有出现 Image result

【问题讨论】:

    标签: java image jsp arraylist dao


    【解决方案1】:

    问题是&lt;img&gt; 元素的src 属性需要一个URL,而您没有向它传递一个URL。

    您似乎正在尝试从数据库中获取任何内容并将其直接放入src 属性中,希望这会起作用。如果您查看页面的 HTML 源代码,您可能会看到如下内容:

    <img src="SomeClassNameHere@18f34fdc" ... >
    

    这不是 URL,这是当您获取一个其类不覆盖 .toString() 的对象并尝试将其转换为字符串时得到的。

    这个问题有两种解决方案:

    1. 将图像数据转换为base64 并使用data: URL 来包含数据。然后,您可以将此 URL 放入 &lt;img&gt; 元素的 src 属性中。见this answer。我不知道您尝试显示的图像有多大(您的问题暗示它们是 50 像素 x 50 像素),但如果它们很大,这可能不是正确的方法。
    2. 拥有一个返回图像数据的 servlet,并写出调用此 servlet 的合适 URL。例如,您可以选择让您的 servlet 响应/usuFoto/&lt;id&gt;,其中&lt;id&gt; 是图像的clienteId,对于src 属性,您可以写出类似src="/usuFoto/&lt;%= cliente_idCliente %&gt; 的内容。有关如何编写此类 servlet 的示例,请参阅 this answer

    【讨论】:

    • 朋友,你能不能把我必须在我的代码中编辑,以便其他人知道要更正什么
    猜你喜欢
    • 2017-04-23
    • 2021-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-21
    相关资源
    最近更新 更多