Доступ к статическим ресурсам веб-приложения - PullRequest
4 голосов
/ 29 марта 2011

Я только что создал очень простое веб-приложение на Java с использованием Wicked фреймворка.Текущий макет проекта:

src/
    main/
        java/
            net/myapp/
                Homepage.java
                Homepage.html
        reources/
            scripts/
                script.js

В файле Homepage.html я пытаюсь загрузить файл JavaScript:

<script src="scripts/script.js"></script>

Я развернул приложение, но браузер нене удается найти файл JavaScript.

Файл WAR упаковывается с помощью подключаемого модуля maven-war-plugin.Я посмотрел в WAR-файл и вижу следующую раскладку:

WEB-INF/
    classes/
        net/myapp/
            Homepage.class
            Homepage.html
        scripts/
            script.js

Что я делаю не так?Чего мне не хватает?

Ответы [ 5 ]

7 голосов
/ 29 марта 2011

Ресурсы, связанные с сетью, должны быть размещены в src/main/webapp

3 голосов
/ 29 марта 2011

Ресурс, находящийся за папкой WEB-INF, не является общедоступным.Если Homepage.class переадресовывает на Homepage.html, файл вы должны увидеть это хорошо.Но на странице HTML у вас есть ссылка на файл javascript, который не является общедоступным.Вам необходимо переместить сценарии за пределы WEB-INF.Структура должна выглядеть следующим образом:

WEB-INF /
     classes /
     net/myapp/
          Homepage.class
          Homepage.html
scripts/
      scripts.js

Таким образом, ссылка в html-файле на

<script src="scripts/script.js"></script>

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

Обновление сценария сборки или макет приложения должен позаботиться об этом за вас.

Редактировать: См.Ответ Божо, это исправит сборку для Maven.см Эта ссылка для Maven

3 голосов
/ 29 марта 2011

Ваша структура каталогов должна быть:

WEB-INF/
    classes/
        net/myapp/
            Homepage.class
            Homepage.html
        net/myapp/scripts/
            script.js

, а ваша разметка должна быть:

<wicket:link><script src="scripts/script.js"></script>&lt/wicket:link>
2 голосов
/ 29 марта 2011

Хотя остальные ответы в целом верны, они не совсем учитывают Wicket.С Wicket вы можете иметь ресурсы на пути к классам, и в некоторых случаях они лучше, чем статический файл.

Вы можете использовать Application.mountSharedResource(), чтобы назначить URL для общего ресурса,который может прийти откуда угодно, включая ваш путь к классам.

0 голосов
/ 12 января 2013

Правописание ресурсов без с?

reources/
...