Ошибка пути JSP при перенаправлении сервлета

1

Я новичок в разработке java-сайтов. Когда я использую перенаправление из сервлета в JSP, изображения и файлы CSS не загружаются. Без сервлета он работает хорошо, но когда я хочу использовать сервлет, он не работает. Файл CSS находится в одной папке с JSP. Пожалуйста, помогите мне, как мне установить атрибут href тега ссылки?

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

сервлет имеет только 1 команду:

request.getRequestDispatcher("index.jsp").forward(request, response);
  • 0
    Где твой код?
  • 0
    Можете ли вы предоставить нам работоспособный пример или, по крайней мере, некоторый код и подробное описание ошибки?
Показать ещё 2 комментария
Теги:
jsp
servlets

1 ответ

2
Лучший ответ

Вы говорите, что используете перенаправление, но используете переадресацию. В любом случае, если файлы ресурсов (CSS, JS и т.д.) Находятся не в одном пути вашего JSP, вам следует добавить контекст запроса для каждого из них. Вот два способа:

  • Использование только языка выражения:

    <link rel="stylesheet" type="text/css" href="/style.css">
    
  • Использование <c:url> JSTL <c:url>:

    <link rel="stylesheet" type="text/css" href="<c:url value='/style.css'/>">
    

Из вашего комментария:

Проблема в том, что я не могу использовать сервлет urlPatterns = {"/"} с этим шаблоном

У вас может быть сервлет с шаблоном url "/". Это означает, что ваш сервлет будет обрабатывать каждый отдельный запрос в вашем приложении, обратите внимание, что запросы к ресурсам (CSS, JS, изображения и т.д.) Являются запросами GET (вы можете легко проверить это, открыв браузер, например Firefox с Firebug или Chrome, нажмите F12 и проверьте вкладку сети, чтобы просмотреть все запросы, сделанные на сервере), чтобы ваш сервлет также обработал их. Это будет так болезненно обращаться с ручным использованием одного сервлета, если вы не захотите самостоятельно реализовать шаблон Front Controller (IMO вы не должны пытаться это сделать, если вы действительно не знаете, что делаете).

Лучшей рекомендацией было бы использовать точный шаблон url для ваших сервлетов, чтобы избежать таких проблем.

  • 0
    Использование JSTL обязательно добавляет "<% @ taglib prefix =" c "uri =" java.sun.com/jsp/jstl/core "%>" вверху файла jsp.
  • 0
    @hradecek да, но это то, что вы должны знать, работая с JSTL, что выходит за рамки этого вопроса.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню