Как мне включить изображения в мой java-апплет на веб-сайте?

#java #html #image #security #applet

#java #HTML #изображение #Безопасность #апплет

Вопрос:

Я смог встроить свой java-апплет на веб-сайт, используя следующий HTML-код.

 <applet name = "Project" code = "Project.class" archive="Project.jar"    
codebase="https://project.googlecode.com/svn/trunk/" width=800 height = 800>
</applet>
 

Я сохранил свой код в базе данных Google code и использовал TortoiseSVN для размещения моего jar-файла и других файлов в этой базе данных, включая мои файлы изображений.

Однако мои файлы изображений не отображаются. Я уже подписал свой jar и все другие файлы классов, но я не подписывал свои изображения. Я не думал, что мне это нужно. Когда я открываю веб-сайт, все остальные компоненты моей программы работают, за исключением изображений. Ни одно из изображений не отображается.

В моем appletviewer изображения действительно отображаются, и я использую следующий код для получения и отображения изображения.

  class SwingPanel extends JPanel{
    Image bg;
    SwingPanel(){
        bg = Toolkit.getDefaultToolkit().getImage("spacebg.jpg");
    }
  }
 //In another class
  public void paintComponent(Graphics g){//PaintComponent
            super.paintComponent(g);//Super
            g.drawImage(bg,0,0,800,800,this);
    }
 

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

Как я могу заставить изображения отображаться на веб-сайте?

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

1. Зачем кодировать апплет? Если это связано со спецификацией. by teacher, пожалуйста, обратитесь к ним, почему преподаватели CS должны прекратить преподавать Java-апплеты .

2. Исходная программа была JFrame, и у меня есть копия этого файла. Однако после самостоятельного исследования я обнаружил, что было бы проще использовать формат апплета, потому что я могу напрямую использовать HTML-код, на который я ссылался выше, и размещать его на веб-сайте оттуда. Я посмотрел на ссылку, и она показалась мне интересной. К вашему сведению, это расширение из проекта класса, и на нашем занятии мы узнали о JApplets, чтобы получить базовую основу и получить доступ к HTML. А затем после этого нырнул в JFrame. На мой взгляд, этот метод намного эффективнее, потому что он получает экспозицию, а также альтернативные методы.

Ответ №1:

Если изображения находятся внутри вашего файла .jar, вы можете получить к ним доступ, используя getResource метод Class или ClassLoader:

 bg = Toolkit.getDefaultToolkit().getImage(
    SwingPanel.class.getResource("spacebg.jpg"));
 

Приведенный выше код ищет spacebg.jpg в том же пакете, который содержит класс SwingPanel.

Если вы развертываете изображение за пределами вашего файла .jar и размещаете его в том же каталоге, что и файл .jar на веб-сервере, вы можете создать URL-адрес относительно местоположения апплета:

 bg = Toolkit.getDefaultToolkit().getImage(
    new URL(applet.getCodeBase(), "spacebg.jpg"));
 

Ответ №2:

Вы должны указать полный веб-адрес в строке расположения ресурса.

Вместо этого:

 bg = Toolkit.getDefaultToolkit().getImage("spacebg.jpg");
 

Вы должны использовать:

 bg = Toolkit.getDefaultToolkit().getImage("http://location-of-image/spacebg.jpg");
 

Или, если он находится в jar-файле:

Вы должны использовать:

 bg = Toolkit.getDefaultToolkit().getImage(getClass().getResource("package-of-class/spacebg.jpg").getFile());
 

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

1. Ваше использование getResource правильно, но в документации для Toolkit.getImage(String) четко указано, что строковый аргумент — это имя файла, а не URL. Ваш пример не будет работать.

2. пожалуйста, удалите -1, вы можете использовать URL.GetFile()

3. URL.GetFile() не возвращает имя файла. Он возвращает часть пути URL-адреса, которая может содержать экранированные октеты и, следовательно, не гарантируется соответствие существующему пути к файлу. Метод называется GetFile(), потому что класс URL очень старый, фактически является частью Java 1.0, и тогда URL-адреса часто ссылались на физические файлы (например, в ftp: URLs). Сравните new URL("file:/C:/Program Files/Microsoft") с new File("C:\Program Files\Microsoft") .

4. В этом случае, когда апплет находится в jar-файле, и тот же jar-файл содержит изображение, URL.GetFile() делает трюк. Я пробовал это сам, и это работает как шарм.

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