Фотография, зарегистрированная в базе данных, повторяется в моей системе при перечислении

#arrays #image #jsp #arraylist #methods

#массивы #изображение #jsp #arraylist #методы

Вопрос:

У меня есть 2 метода, которые извлекают его из видео, чтобы иметь возможность перечислять изображения из базы данных в мой ssitea в jsp, что происходит, так это то, что моя система перечисляет изображения одного человека, и они повторяются, когда должна отображаться фотография каждого

способ перечисления

 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;
    }
 

способ отображения списка изображений

 public void listarImg(String cliente_idCliente,HttpServletResponse response){
             InputStream inputStream= null;
             OutputStream outputStream=null;
             BufferedInputStream bufferedInputStream=null;
             BufferedOutputStream bufferedOutputStream=null;
             response.setContentType("image/*");
        try {
            conexion = this.obtenerConexion();
             sql = "SELECT * FROM vwcitasactivas WHERE cliente_idCliente=?";
             outputStream=response.getOutputStream();
             puente = conexion.prepareStatement(sql);
            puente.setString(1, cliente_idCliente);
             mensajero = puente.executeQuery();
            if (mensajero.next()) {
                inputStream=(mensajero.getBinaryStream(3));
            }
            bufferedInputStream=new BufferedInputStream(inputStream);
            bufferedOutputStream=new BufferedOutputStream(outputStream);
            int i=0;
            while((i=bufferedInputStream.read())!=-1){
                bufferedOutputStream.write(i);
            }

        } catch (SQLException e) {
            Logger.getLogger(CitaDAO.class.getName()).log(Level.SEVERE, null, e);
        } catch (IOException ex) {
            Logger.getLogger(CitaDAO.class.getName()).log(Level.SEVERE, null, ex);
        } finally {
            try {
                Conexion conexBd = new Conexion();
                conexBd.cerrarConexion();
            } catch (SQLException e) {
                Logger.getLogger(CitaDAO.class.getName()).log(Level.SEVERE, null, e);
            }
        }
        
    }
 

мой 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="ImagenControlador?idCliente=<%=idCliente%>" 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  style="text-align: center">
    <span><a href="Cita?opcion=6amp;textId=<%=citVO.getIdCita()%>amp;textEstado=<%=citVO.getCitEstado()%>"><i class="ti-eye color-default" style="font-size: 18px"></i></a> </span>
    <span><a href="Cita?opcion=7amp;textId=<%=citVO.getIdCita()%>"><i class="ti-pencil-alt color-success" style="font-size: 18px"></i></a></span>
    <span><a href="Cita?opcion=3amp;textId=<%=citVO.getIdCita()%>amp;textEstado=<%=citVO.getCitEstado()%>" class="btn sweet-confirm" onclick="return cancelarCita(event)"><i class="ti-trash color-danger" style="font-size: 18px"></i> </a></span>
</td>
</tr>
<%}%
 
 

это мои два метода для перечисления информации и изображений и мой код jsp, в котором я перечисляю все, и следующий результат следующий
введите описание изображения здесь

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

Комментарии:

1. Привет, что idCliente в нем есть? Вы где-нибудь меняете ее значение? и в вашем коде вы передаете то же idCliente самое своему бэкэнду для загрузки изображения, я думаю, что оно имеет одинаковое значение каждый раз.

2. Я использую идентификатор клиента для перечисления людей с одинаковым идентификатором, в данном случае это 2 человека, первые два на фотографии и последний

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

4. пример, пожалуйста

5. я имею в виду, что вместо передачи id передайте другой столбец , который уникален для всех записей .