Браузер не может получать / находить относительные ресурсы, такие как CSS, изображения и ссылки при вызове сервлета, который пересылает JSP

У меня возникли проблемы с загрузкой CSS и изображений и созданием ссылок на другие страницы, когда у меня есть сервлет в JSP. В частности, когда я устанавливаю свой в index.jsp , CSS загружается и отображаются мои изображения. Однако, если я установил свой в HomeServlet который index.jsp управления в index.jsp , CSS не применяется и мои изображения не отображаются.

Мой CSS-файл находится в web/styles/default.css .
Мои изображения находятся в web/images/ .

Я связываюсь с моим CSS следующим образом:

  

Я показываю свои изображения следующим образом:

 Image1 

Как возникла эта проблема и как ее решить?


Обновление 1 : Я добавил структуру приложения, а также другую информацию, которая может помочь.

alt text

Файл header.jsp – это файл, содержащий тег ссылки для CSS. HomeServlet настроен как мой welcome-file в web.xml :

  HomeServlet  

Сервлет объявляется и отображается как следующий в web.xml :

  HomeServlet com.brianblog.frontend.HomeServlet   HomeServlet /  

Обновление 2 : я обнаружил проблему в конце – мой сервлет был неправильно отображен. По-видимому, при установке сервлета в качестве он не может иметь шаблон URL-адреса / , который я нахожу странным, потому что это не означает, что это корневой каталог сайта?

Новое отображение выглядит следующим образом:

  HomeServlet /HomeServlet  

  • Как работают servlets? Создание, сеансы, общие переменные и multithreading
  • Почему Spring MVC отвечает 404 и сообщает «Нет сопоставления для HTTP-запроса с URI в DispatcherServlet»?
  • Рекомендуемый способ сохранения загруженных файлов в приложении сервлета
  • Как импортировать API javax.servlet в проект Eclipse?
  • Как использовать servlets и Ajax?
  • Как загрузить файлы на сервер с помощью JSP / Servlet?
  • Показать JDBC ResultSet в HTML на странице JSP с использованием шаблонов MVC и DAO
  • 8 Solutions collect form web for “Браузер не может получать / находить относительные ресурсы, такие как CSS, изображения и ссылки при вызове сервлета, который пересылает JSP”

    Все относительные URL-адреса на странице HTML, сгенерированные JSP-файлом, относятся к текущему URL-адресу запроса (URL-адрес, который вы видите в адресной строке браузера), а не к местоположению JSP-файла на стороне сервера, как вы, кажется, ожидаете. Это именно веб-браузер, который должен загружать эти ресурсы по URL-адресу, а не веб-серверу, который должен каким-то образом включить их с диска.

    Помимо изменения относительных URL-адресов, чтобы сделать их относительно URL-адреса сервлета вместо местоположения JSP-файла, еще один способ исправить эту проблему – сделать их относительно корня домена (т.е. начать с a / ). Таким образом, вам не нужно беспокоиться об изменении относительных путей еще раз при изменении URL-адреса сервлета.

           link 

    Однако вам, вероятно, не хотелось бы жестко указывать путь контекста. Очень разумно. Вы можете получить контекстный путь в EL с помощью ${pageContext.request.contextPath} .

           link 

    (который может быть легко сокращен с помощью и используется как ${root} другом месте)

    Или, если вы не боитесь нечитаемого XML и разбитого синтаксиса XML, используйте JSTL :

      " /> ">   " /> ">link 
    ">

    В любом случае, это в свою очередь довольно громоздко, если у вас много относительных URL-адресов. Для этого вы можете использовать . Все относительные URL-адреса мгновенно станут относительными к нему. Однако он должен начинаться со схемы ( http:// , https:// и т. Д.). Нет простого способа получить базовый контекстный путь в обычном EL, поэтому нам нужна небольшая помощь JSTL .

     < %@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> < %@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>   ${req.requestURL} ...        link 

    Это в свою очередь (опять же) некоторые предостережения. Якоря (URL-адрес #identifier ) будут также #identifier к базовому пути! Вы хотели бы сделать это относительно URL-адреса запроса (URI). Итак, измените, как

     jump 

    в

     jump 

    Каждый путь имеет свои плюсы и минусы. Вам решать, что выбрать. По крайней мере, теперь вы должны понять, как эта проблема вызвана и как ее решить 🙂

    Смотрите также:

    • Рекомендуется ли использовать html?

    Я столкнулся с аналогичной проблемой с приложением Spring MVC. Я использовал < mvc:resources > чтобы решить эту проблему.

    Пожалуйста, найдите следующую ссылку, содержащую более подробную информацию.

    http://www.mkyong.com/spring-mvc/spring-mvc-how-to-include-js-or-css-files-in-a-jsp-page/

    Вы должны проанализировать фактический вывод HTML для подсказки.

    С другой стороны, указывая путь, как это означает «из текущего местоположения», если вы начинаете с того, что будет означать «из контекста».

    Ваша страница приветствия установлена ​​в качестве этого сервлета. Таким образом, все css, путь изображения следует указывать относительно DIR сервлета. это плохая идея! зачем вам сервлет в качестве домашней страницы? установить .jsp в качестве индексной страницы и перенаправить на любую страницу оттуда?

    вы пытаетесь заполнить любые поля из db, поэтому вы используете сервлет?

    Если вы используете Spring MVC, вам необходимо объявить сервлет действия по умолчанию для статического содержимого. Добавьте следующие данные в spring-action-servlet.xml. Это сработало для меня.

    ПРИМЕЧАНИЕ. Храните все статическое содержимое вне WEB-INF.

             

    Что касается вашего обновления, я был в замешательстве за рассуждения. Глубоко углубился и нашел этот камень:

    • Yoursite.com становится yoursite.com/
    • yoursite.com/ – это каталог, поэтому список приветственных файлов проверяется
    • yoursite.com/CMS – это первый приветственный файл («CMS» в списке приветственных файлов), и есть сопоставление / CMS с сервлетом MyCMS, так что к сервлету обращаются.

    Источник: http://wiki.metawerx.net/wiki/HowToUseAServletAsYourMainWebPage

    Таким образом, отображение тогда имеет смысл.

    И теперь можно свободно использовать $ {pageContext.request.contextPath} / path / as src / href для относительных ссылок!

    короткий ответ – добавьте следующую строку в jsp, которая определит базовую
    base href = “/ {корень вашего приложения} /”

    Ниже код работал для меня.

    вместо использования < % @ include file = "styles / default.css"%>

    Interesting Posts

    Как объединить два порта Ethernet в Mac OS X

    Отключение функциональных клавиш в Windows 8 с помощью Autohotkey

    Как извлечь одну папку и ее подпапки из «tarball» (.tar.gz)

    Наушники usb только воспроизводят определенный звук

    Средства администрирования потеряны

    Переносите мой раздел восстановления ноутбуков, сохраняя его загрузочным

    Каков безопасный температурный диапазон для процессора Core-i5?

    Как подключить веб-сайт к стартовому экрану Windows 8 без браузера Internet Explorer?

    Настройка яркости дисплея ноутбука не работает в Linux Mint 14

    Как я смогу сделать VHD-установку Windows 8 из Windows 7

    Настройка ярлыков Firefox

    1 ТБ hdd и нет места для создания раздела для Linux!

    Mikrotik – сбросить счетчик пользовательского менеджера после дня или недели

    Как синхронизировать компьютерные часы без прав администратора

    Устанавливаются ли пользовательские ярлыки для Windows только для определенных каталогов?

    Давайте будем гением компьютера.