Почему я не могу получить доступ ко всем файлам пакета WAR с root? - PullRequest
0 голосов
/ 23 апреля 2020

Я знаю, что смогу ссылаться на все файлы в приложении WAR-файла из WAR root '/'. Но это не похоже на работу. И я действительно в замешательстве.

Мое приложение развертывает свой веб-контент в следующем файле WAR.

WAR
  index.html
  META-INF
  WEB-INF
  css
    fonts.css
    other style  sheets
  images
    Banner.jpg
  jsp-pages
    headers
      beg.jsp
      menu.jsp
      end.jsp
    level-1
      pages
        anypage.jsp
        multiple subdirectories
          multipe subdirecories
  scripts
    multiple scripts

Мое приложение имеет сотни html страниц на разных уровнях WAR каталог. И все они должны ссылаться на изображения, css файлы, файлы сценариев и другие html страницы на разных уровнях каталогов.

Поэтому я бы очень хотел иметь возможность ссылаться на все файлы из WAR root '/'. (Поэтому мне не нужно каждый раз считать нужное количество «../».

Я знаю, что это должно позволить мне связать эту таблицу стилей с любым файлом любого уровня:

<link href="/css/fonts.css" rel="stylesheet" type="text/css"/>

Но это не работает, поэтому я должен использовать относительные ссылки.

<link href="../../../css/fonts.css" rel="stylesheet" type="text/css"/>

Еще хуже. Кажется, это не соответствует.

Например, Все html файлы в WAR / jsp -pages / level-1 / pages структурированы таким образом.

<%@ include file='/jsp-pages/level-1/headers/beg.jsp'%>
content
<%@ include file='/jsp-pages/level-1/headers/end.jsp' %>

И это код для умолка. jsp. Поэтому обратите внимание, что я могу сослаться на включите в начало. jsp из WEB root '/'. Но я должен сослаться на изображение относительно папки страницы.

нач. jsp

<html>
  <head>
    the css link above
  </head>
  <body>
    <div class="banner">
      <!-- this needed a relative reference -->
      <img style="width:100%"      src='../../../images/Banner.jpg'/>
      <!-- but I could reference this include from '/' -->
      <%@ include file='/jsp-pages/level-1/headers/menu.jsp' %>
      <!--        Every page must close with         -->
      <!--       </div> For: class='content-block'>  -->
      <!--     </div> For: class='scroll-block'>     -->
      <!--   </body>                                 -->
      <!-- </html>                                   -->

1 Ответ

0 голосов
/ 28 апреля 2020

Решение настолько простое, что смущает.

И, к сожалению, никто не предложил его.

Если вы развернете приложение с

  <web>
    <web-uri>Pct109.war</web-uri>
    <context-root>/</context-root>
  </web>

Т.е. так приложение открывается только с http://domanName.org/

Тогда вы можете ссылаться на все военные файлы с помощью "/"

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

  <web>
    <web-uri>Pct109.war</web-uri>
    <context-root>/Pct109</context-root>
  </web>

Т.е. чтобы он открывался с http://domanName.org/Pct109, вы можете ссылаться на все военные файлы с помощью / Pct109 /

Очевидное ... ухмылка ... как только вы это выясните.

На файлы войны ссылаются по тому, как вы их развернули ... а не только с верха пакета войны

Счастливые Тропы.

...