Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вставить картинку в jsp 
:(
    Опции темы
Anastasia2410
Дата 24.8.2015, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.8.2015

Репутация: нет
Всего: нет



Есть папка images на диске C. Как вставить картинку в jsp из этой папки ?

Пробую так:

Код

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="sec"
           uri="http://www.springframework.org/security/tags"%>
<html>
<head>
    <title></title>
</head>
<body>

<img src="C:/images/1.jpg" />


</body>
</html>




Но ничего не получается. Прошу помощи , объясните , пожалуйста, как это сделать?
PM MAIL   Вверх
AntonSaburov
Дата 24.8.2015, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



А что такое 

<img src="C:/images/1.jpg" />

браузер на клиенте должен локально сходить к себе и загрузить такую картинку ? А она у него там есть ?

PM MAIL WWW ICQ   Вверх
Anastasia2410
Дата 24.8.2015, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.8.2015

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 24.8.2015,  17:53)
А что такое 

<img src="C:/images/1.jpg" />

браузер на клиенте должен локально сходить к себе и загрузить такую картинку ? А она у него там есть ?

Та я уже поняла , что это не правильно . 

У  меня такая ситуация: 

есть в БД таблица user , в ней поле path . Пользователь загружает картинку и путь к этой картинке записывается в path . У меня сейчас картинки загружаются на диск , например , в C:/images . И path получается в виде C:/images/1.png
Но это не совсем то , что нужно . 

А потом пытаюсь вставить в jsp этот path - и понятно, что ничего не получается. Картинка не видна. 


Куда тогда в этом случае грузить картинку? Вот этот вопрос мне не ясен. 

Думала , что в папку проекта нужно.

Это сообщение отредактировал(а) Anastasia2410 - 25.8.2015, 00:22
PM MAIL   Вверх
AntonSaburov
Дата 25.8.2015, 09:35 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Ну в принципе не самый худший вариант хранения картинок. Правда в случае если картинка не очень большая, то есть смысл хранить их в базе в виде BLOB полей - большое количчество маленьких файлов на диске - не самое разумное. Там много вариантов еще может быть - например хранить файлы в архиве. Но не суть - даю пример отдачи файла через сервлет.

Код

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author ASaburov
 */
public class HelloImage extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // ОЧЕНЬ ВАЖНЫЙ МОМЕНТ - надо заранее установить тип возвращаемой информации
        // чтобы броузер мог правильно его показывать. Здесь у нас будет возвращаться картинка
        // в формате PNG
        response.setContentType("image/png");
        OutputStream out = response.getOutputStream();
        try {
            // Тут можн загрузить файл с диска не через URL а напрямую - сами найдете
            URL imageURL = HelloImage.class.getResource("map.png");
            BufferedImage bi = ImageIO.read(imageURL);
            ImageIO.setUseCache(false);
            ImageIO.write(bi, "png", out);
        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }
}


PM MAIL WWW ICQ   Вверх
Anastasia2410
Дата 25.8.2015, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 24.8.2015

Репутация: нет
Всего: нет



Цитата(AntonSaburov @ 25.8.2015,  09:35)
Ну в принципе не самый худший вариант хранения картинок. Правда в случае если картинка не очень большая, то есть смысл хранить их в базе в виде BLOB полей - большое количчество маленьких файлов на диске - не самое разумное. Там много вариантов еще может быть - например хранить файлы в архиве. Но не суть - даю пример отдачи файла через сервлет.

Код

import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.net.URL;
import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author ASaburov
 */
public class HelloImage extends HttpServlet {

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        // ОЧЕНЬ ВАЖНЫЙ МОМЕНТ - надо заранее установить тип возвращаемой информации
        // чтобы броузер мог правильно его показывать. Здесь у нас будет возвращаться картинка
        // в формате PNG
        response.setContentType("image/png");
        OutputStream out = response.getOutputStream();
        try {
            // Тут можн загрузить файл с диска не через URL а напрямую - сами найдете
            URL imageURL = HelloImage.class.getResource("map.png");
            BufferedImage bi = ImageIO.read(imageURL);
            ImageIO.setUseCache(false);
            ImageIO.write(bi, "png", out);
        } finally {
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        processRequest(request, response);
    }
}

А если нужно будет загружать не только png картинки ? 
PM MAIL   Вверх
AntonSaburov
Дата 25.8.2015, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Цитата(Anastasia2410 @  25.8.2015,  10:02 Найти цитируемый пост)
А если нужно будет загружать не только png картинки ?  

Если хочется сделать хранилище файлов, то надо смотреть весь комплекс проблем, которые надо решать.
- Максимальный размер файла, минимальный размер файла, средняя величина файла.
- Что надо уметь делать с этими файлами - только скачивать или надо давать возможность загружать на сервер. 
- Еще сложнее задача - организовать поиск по содержимому файлов.
- Есть ли какая-то авторизация (система доступа)

А просто так хранить - ну можно просто в базе хранить, которая нормально работает с BLOB-полями.
PM MAIL WWW ICQ   Вверх
tzirechnoy
Дата 25.8.2015, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Если уж зачем-то написали на java отдачу картинок из файла с диска -- то хотя бы докачку сделайте.
PM MAIL   Вверх
AntonSaburov
Дата 25.8.2015, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Цитата(tzirechnoy @  25.8.2015,  14:24 Найти цитируемый пост)
Если уж зачем-то написали на java отдачу картинок из файла с диска -- то хотя бы докачку сделайте. 

Это в смысле замечание такое ? Для отдачи картинки на 20-50К при нынешних скоростях докачку надо делать ? Для отображения на странице браузера ? Повеселили.

Сделать докачку наверно интересная задача, но в данной ситуации такой вопрос выглядит мягко говоря предложением померяться сами знаете чем. Может пора взрослеть ?

PM MAIL WWW ICQ   Вверх
tzirechnoy
Дата 25.8.2015, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Цитата
Это в смысле замечание такое ?


Да.

Цитата
Для отдачи картинки на 20-50К при нынешних скоростях


Я вжывую видел favicon.ico большэ мегабайта. Так что вот как раз при нынешних скоростях -- Вы явно через чур оптимистичны.

Цитата
Сделать докачку наверно интересная задача,


Камон, там десять строчек. А если экономить -- так дажэ пять. Заодно, возможно, автору станет понятно, почему здесь очень вредно использовать BufferedImage.

И нет, я не хочу их писать -- единственный томкат в моей эпсилон-окрестности работу работает, я не будут его трогать.

Цитата
Может пора взрослеть ?


Это философский вопрос, знаете ли. Каждый отвечает на него в соответствии со своим смыслом жызни.

Я, в общем, не настаиваю. Да что там -- мне дажэ удобно, берёшь шабашку -- а там такой любитель писать на джаве файл-серверы. Ставишь nginx в качестве кэша и для раздачи статики -- и оно сразу летать начинает.
PM MAIL   Вверх
AntonSaburov
Дата 25.8.2015, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 8
Всего: 118



Цитата(tzirechnoy @  25.8.2015,  17:09 Найти цитируемый пост)
Это философский вопрос, знаете ли. Каждый отвечает на него в соответствии со своим смыслом жызни.

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

PM MAIL WWW ICQ   Вверх
tzirechnoy
Дата 25.8.2015, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: нет
Всего: 16



Цитата
Вы ему докачку предлагаете, большие файлы. Ему для начала надо ходить научиться


Предлагаю, да. Во-первых -- ещё раз -- там нет ничего сложного, кроме базового инжэнерного навыка "гуглить как оно должно работать". Четыре несчастных заголовка -- один принять и разобрать, три отправить.

Во-вторых, мой высокомерный тон вполне можэт намекнуть, что приведённое -- очень херовое решэние с самого начала.
PM MAIL   Вверх
Samotnik
Дата 1.9.2015, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Super star !
****


Профиль
Группа: Awaiting Authorisation
Сообщений: 7192
Регистрация: 4.11.2006
Где: Минск City

Репутация: 5
Всего: 191



tzirechnoy, Есть в вебе Java такое понятие, как ресурсы. Нельзя указывать прямой путь на бинарные источники. Нужно всё ложить в веб ресурсы, есть для этого папочка web, там кстати есть и jsp файлы, ты же не указываешь в web.xml прямой путь на свою jsp/html
PM MAIL   Вверх
jelum
Дата 12.10.2015, 13:43 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Anastasia2410, вопрос ещё актуален?

Этот ответ добавлен с нового Винграда - http://vingrad.com
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0790 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.