Я новичок в разработке java-сайтов. Когда я использую перенаправление из сервлета в JSP, изображения и файлы CSS не загружаются. Без сервлета он работает хорошо, но когда я хочу использовать сервлет, он не работает. Файл CSS находится в одной папке с JSP. Пожалуйста, помогите мне, как мне установить атрибут href тега ссылки?
<link rel="stylesheet" type="text/css" href="/style.css">
сервлет имеет только 1 команду:
request.getRequestDispatcher("index.jsp").forward(request, response);
Вы говорите, что используете перенаправление, но используете переадресацию. В любом случае, если файлы ресурсов (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 для ваших сервлетов, чтобы избежать таких проблем.