Статическое содержание. разница в поведении Tomcat6 и Tomcat7
Вопрос
Извините, если я спрошу что -то, о чем спрашивали 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 -адреса проходят в приложение.