Не удалось загрузить файлы ресурсов при сопоставлении сервлета с шаблоном URL /

Я использую NetBeans и Tomcat 7.0.4.2 и хотел бы изменить URL-адрес моего проекта с localhost:8080/Servlet на localhost:8080/. В web.xml я изменил URL-адрес сервлета с <url-pattern>/Servlet</url-pattern> на <url-pattern>/</url-pattern>.

Проблема в том, что я не могу сейчас загрузить файлы ресурсов и получаю ошибки в журнале консоли браузера:

  Failed to load resource: the server responded with a status of 404 (Not Found) (11:45:14:149 | error, network)
  at src/main/webapp/scripts/aui-min_2.0.0.js

Путь к файлам ресурсов src/main/webapp/scripts и в файле JSP я использую этот путь

<script type="text/javascript" src="scripts/aui-min_2.0.0.js"></script>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>socialgraphui.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
</web-app>

person Matt    schedule 11.11.2014    source источник
comment
Каталог src отсутствует в развертывании. Любой код, который у вас есть, который полагается на то, что он есть, неверен.   -  person user207421    schedule 04.04.2016
comment
Связано: stackoverflow.com/q/4140448   -  person BalusC    schedule 04.04.2016


Ответы (1)


Шаблон URL-адреса / используется сервлетом по умолчанию, способным загружать статические ресурсы, которые не отображаются другими сервлетами. Когда вы переключились на этот шаблон, он перестал работать. Итак, вы должны сохранить отображение сервлета.

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

Если вы хотите начать со страницы индекса, используйте index.jsp, который указан в конфигурации <welcome-file-list>. Страница индекса может перенаправлять на сервлет, используя

response.sendRedirect(request.getContextPath() +"/Servlet");

Чтобы загрузить статический ресурс, используйте путь контекста сервлета, подобный этому

<script type="text/javascript" src="${pageContext.request.contextPath}/scripts/aui-min_2.0.0.js"></script>
person Roman C    schedule 11.11.2014
comment
Роман, спасибо за ответ, но после этого tomcat запускает мой проект в цикле и не может остановиться - person Matt; 11.11.2014
comment
Хорошо, перераспределите его снова. - person Roman C; 11.11.2014
comment
Спасибо Роман, но все равно не работает. Это мой новый файл web.xml pastebin.com/ZZjQ0EgE, и теперь я могу загрузить свои исходники на localhost:8080/ адрес, но с этим решением я не могу передать переменные из сервлета в файл index.jsp. В классе Servlet я попытался заменить request.getRequestDispatcher(index.jsp).forward(request, response); по response.sendRedirect(/Servlet); в методе processRequest, но по-прежнему не может передавать переменные. - person Matt; 11.11.2014
comment
index.jsp должен иметь только код <%response.sendRedirect("/Servlet");%>. Но вы можете отправить на другую страницу, чтобы избежать бесконечного цикла. - person Roman C; 12.11.2014