Я развертываю webapp на двух разных контейнерах (Tomcat и Jetty), но их сервлеты по умолчанию для обслуживания статического контента имеют другой способ обработки структуры URL, которую я хочу использовать (подробнее).
Поэтому я хочу включить небольшой сервлет в webapp для обслуживания своего собственного статического контента (изображения, CSS и т.д.). Сервлет должен иметь следующие свойства:
- Нет внешних зависимостей
- Простой и надежный
- Поддержка
If-Modified-Since
header (т.е. пользовательскийgetLastModified
) - (Необязательно) поддержка кодирования gzip, etags,...
Является ли такой сервлет доступным где-нибудь? Ближайший я могу найти пример 4-10 из книги сервлетов.
Обновление: Структура URL, которую я хочу использовать, в случае, если вам интересно, - это просто:
<servlet-mapping>
<servlet-name>main</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/static/*</url-pattern>
</servlet-mapping>
Таким образом, все запросы должны быть переданы в главный сервлет, если они не предназначены для пути static
. Проблема заключается в том, что сервлет Tomcat по умолчанию не учитывает ServletPath (поэтому он ищет статические файлы в основной папке), в то время как Jetty делает (поэтому он выглядит в папке static
).