JSP не видит CSS

1

Я пытаюсь сделать простой проект Servlets + JSP. Структура выглядит следующим образом:

Изображение 174551

index.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
  <title>App</title>
  <link rel="stylesheet" type="text/css" href="../css/style.css"/>
</head>
<body>
<h1>Header</h1>
</body>
</html>

style.css:

body {
    background-color: beige;
}

web.xml:

<web-app>
    <display-name>App</display-name>

    <servlet>
        <servlet-name>IndexServlet</servlet-name>
        <servlet-class>com.example.web.IndexServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

Когда я запускаю приложение и открываю его в браузере, я вижу страницу index.jsp, но его фон белый, поэтому css там не работает. В чем может быть проблема?

  • 0
    где ваша спецификация <welcome-file-list> в web.xml? потому что корень по умолчанию находится в webapp / index.jsp, а не в webapp / pages / index.jsp
  • 0
    Попытался добавить это в web.xml, ничего не изменилось. Эта страница сама открывается в браузере, единственная проблема в том, что css не работает.
Показать ещё 4 комментария
Теги:
jsp
servlets

1 ответ

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

В вашем приложении есть две проблемы:

  1. В JSP вы должны использовать ${pageContext.request.contextPath} чтобы добавить базовый путь для своих URL-адресов. При этом вы можете быть уверены, что используете абсолютный путь вместо относительного пути для своих URL-адресов. Итак, это:

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

    Будет

    <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/style.css"/>
    

    Это также может быть выполнено с помощью <c:url> из JSTL:

    <link rel="stylesheet" type="text/css" href="<c:url value='/css/style.css' />"/>
    
  2. Ваш сервлет сопоставляет каждый запрос, сделанный в вашем приложении. Обратите внимание, что это включает простые запросы на ресурсы, такие как этот файл CSS. Если вы не обрабатываете эти запросы успешно, вы можете получить ответ об ошибке или пустой ответ или что-то еще, зависит от того, как вы обрабатываете запрос на файлы CSS в сервлет. Я рекомендую вам изменить шаблон URL-адреса для вашего сервлета для сопоставления с конкретными путями.

    <servlet-mapping>
        <servlet-name>IndexServlet</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>
    

Ещё вопросы

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