http URL для файла JS внутри войны? - PullRequest
2 голосов
/ 08 октября 2010

Предположим, что разметка WAR выглядит следующим образом:

foo.war
-->/WEB-INF
   -->/classes (..)
   -->/js
      -->bar.js
   -->index.jsp
   -->web.xml

Теперь предположим, что виртуальный каталог WAR - это / blah на сервере example.com (т.е. http://example.com/blah).

Что такое HTTP-URLbar.js, который будет использоваться в теге <script src="">, который index.jsp может обслуживать? http://example.com/blah/js/bar.js не работает.

Ответы [ 2 ]

3 голосов
/ 08 октября 2010

Вы должны НИКОГДА не помещать JS в каталог WEB-INF .

Как написано в спецификациях сервлета, все, что вы положили внутрь *Каталог 1009 * WEB-INF никогда не будет напрямую доступен для внешнего мира.Там находятся только ресурсы локальных приложений.

Поэтому, если вы хотите, чтобы какой-нибудь файл JS был доступен извне, поместите его прямо в ROOT WAR.Примерно так:

foo.war
-->/js/
    -->bar.js
-->/WEB-INF
    -->internal resources here

URL для доступа к JS будет выглядеть примерно так:

http://YOUR_IP:8080/foo/js/bar.js

Это, конечно, может зависеть от того, как вы настроили свою войну.развертывание на сервере приложений.

Вы do однако поместите файлы JSP в каталог WEB-INF , только чтобы вызывать их из сервлетов (вытакже не может напрямую получить к ним доступ) с помощью чего-то вроде:

RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("WEB-INF/index.jsp");

Это обычная практика, если вы не хотите, чтобы люди обращались напрямую к вашим JSP файлам извне.

2 голосов
/ 08 октября 2010

Нет URL, который будет указывать на это. Все в WEB-INF не подвергается воздействию внешнего мира.

Скорее, если вы организовали раскладку WAR следующим образом:

foo.war
-->/WEB-INF
   -->/classes (..)
   -->web.xml
-->/js
  -->bar.js
-->index.jsp

Тогда вы можете получить доступ к своему Javascript как http://example.com/blah/js/bar.js.

P.S. Вы также не сможете получить доступ к index.jsp, как вы сейчас настроили.

...