Статическое содержание. разница в поведении Tomcat6 и Tomcat7

StackOverflow https://stackoverflow.com/questions/4764675

  •  16-10-2019
  •  | 
  •  

Вопрос

Извините, если я спрошу что -то, о чем спрашивали 1000 раз, но я искал это и ничего не нашел :)

У меня есть 2 установки Tomcat. Tomcat 6 на Windows и Tomcat 7 на Manux Machine. У меня есть проект, который использует Spring и имеет какой -то статический контент, который я хотел бы иметь в состоянии обслуживать, не делая запросов до весны.

Вот моя конфигурация сервлета:

<servlet-mapping>
  <servlet-name>Spring MVC Dispatcher Servlet</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
 <servlet-name>default</servlet-name>
 <url-pattern>/static/*</url-pattern>
</servlet-mapping>

Мои статические файлы расположены в «статической» папке рядом с папкой Web-Inf.

Теперь забавно то, что на Tomcat7, когда я делаю просьбу http://myserver.com/myproject/static/css/main.css Он ищет файл в combapps/myproject/static/css/main.css, но на tomcat6 он ищет его в /webapps/myproject/css/main.css и создает ошибку, говоря, что такого файла нет.

Какую конфигурацию я должен настроить для обоих серверов работать одинаково?

Это было полезно?

Решение

Вы на самом деле злоупотребляете сервлетом Томката по умолчанию. Сервлет по умолчанию не определяется API сервлета и специфичен для контейнера сервлета. Известно, что сервлет по умолчанию Tomcat имеет ошибку, которая может разоблачить все содержимое /WEB-INF а также /META-INF При этом злоупотребляли таким образом, тем самым открывает двери для конфиденциальной информации. Это было сообщено как Выпуск 50026 и был зафиксирован в Tomcat 6.0.30 и далее.

Решение простое: вы не должны явно отображать сервлет по умолчанию в вашем web.xml вообще. Как указано в отчете об ошибках, вы должны использовать этот подход вместо.

Другие советы

Другой, более простой ответ, предоставленный Кейси к тому же вопросу, что Балуску Ссылки на то, чтобы указать свой список приветственного списка и составить отображение последнего приветственного файла с шаблоном URL вашего сервта приложения. В этой конфигурации сервлет по умолчанию обрабатывает статический контент, в то время как любые непревзойденные URL -адреса проходят в приложение.

Полный ответ с кодом, от Кейси

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top