Изображение не будет загружаться на моей странице JSP из базы данных MySQL

#java #mysql #image #jsp

#java #mysql #изображение #jsp

Вопрос:

Я создал таблицу в базе данных, и у меня проблема с загрузкой изображения из этой базы данных. Тип данных, которые я использовал для img, — blob, у меня хорошее соединение с базой данных, все остальные данные отображаются на моей странице jsp, но изображение не загружается. Тип данных img — .jpg, размеры изображения 250×250 и размер около 14,2 КБ

 CREATE TABLE `akcija` (
  `idakcija` int(11) NOT NULL AUTO_INCREMENT,
  `naziv` varchar(45) NOT NULL,
  `cena` varchar(45) DEFAULT NULL,
  `img` blob,
  PRIMARY KEY (`idakcija`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1
 

Я загружаю данные, следуя запросу insert:

 INSERT INTO `games1`.`akcija` (`naziv`, `cena`,`img`)
 VALUES ('TEST','3500', 'C:\Users\mlade\OneDrive\Desktop\New Folder (2)\WebApplication1\web\gallery\ufc4.jpg');

I also tried by right click on field for img and selecting Load Value from File, and then selecting img that I want. And third option that I tried is right click -> open value in editor -> Load image -> Apply -> and Apply on changes
 

Вот моя страница JSP

 <%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
<%@ page import="java.io.*" %>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@include  file="connection.jsp"%>
<!DOCTYPE html>
<html>
    <head>
        <%@include file="header.jsp" %>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <div class="container">
            <img class="img-fluid "  src="https://gifcdn.com/1h64r34cpd6coj0dhl.gif" alt="mailtimers.com">
        </div>

        <table class="table table-sm">
            <thead>
                <tr>
                    <th scope="col">Ime igrice</th>
                    <th scope="col">Cena</th>
                    <th scope="col">Slika</th>
                </tr>
            </thead>
            <%                String id = request.getParameter("id");
                Blob img = null;
                Connection connection = null;
                Statement statement = null;
                ResultSet resultSet = null;
                try {
                    connection = DriverManager.getConnection(connectionUrl   database, userid, password);
                    statement = connection.createStatement();
                    String sql = "select * from akcija";
                    resultSet = statement.executeQuery(sql);
                    int i = 0;
                    while (resultSet.next()) {
            %>
            <tbody>
                <tr>
                    <td><%=resultSet.getString("naziv")%></td>
                    <td><%=resultSet.getString("Cena")%></td>
                    <td><img src="<%=resultSet.getBlob("img")%>" width="250" height="250"/></td>
                </tr>
            </tbody>
            <%
                        i  ;
                    }
                } catch (Exception e) {
                    out.println("Problem");
                    return;
                } finally {
                    try {
                        resultSet.close();
                        statement.close();
                        connection.close();
                    }
                    catch (SQLException e) {
                     e.printStackTrace();
                    }
                }
            %>
        </table>
    </body>
</html>
 

Данные из столбцов naziv и cena отображаются на странице jsp, но изображение не загружается. См. Рисунок

Изображение не загружается

Структура проекта

Структура проекта2

Вот скриншоты структуры моего проекта. Также скриншоты БД и запроса, которые я использовал для вставки данных в БД

Скриншот БД

Запрос для вставки данных

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

1. Когда я проверяю веб-страницу, у меня возникает такая ошибка: localhost: 8080/WebApplication1/faces / … 404 (не найден)

2. вы вставляете запрос для вставки строки для изображения или большого двоичного объекта?

3. Я согласен с @Swati в том, что вы вставляете строку вместо самого изображения. Ознакомьтесь с этими руководствами , чтобы узнать, как это сделать. Кстати, другим распространенным способом является сохранение типа данных столбца as varchar , а затем вставка пути к изображению в файловой системе (как вы делаете в своем операторе insert). Затем извлеките строку пути ( getString , not getBlob ) в JSP и поместите ее с img тегом.

4. @MladenSavic — Вставить gallery/ufc4.jpg в БД вместо полного пути из файловой системы. Кроме того, используйте resultSet.getString("img") вместо resultSet.getBlob("img") с <img> тегом.

5. @MladenSavic — Добро пожаловать.