читать статические файлы из каталога сервлетов - PullRequest
4 голосов
/ 22 октября 2011

Я хочу, чтобы мой сервлет Java игнорировал вызовы для статических файлов, например, если файл существует - просто верните фактический файл без фактической загрузки сервлета.

в моем примере у меня есть MyServlet в NetBeans, а в каталоге «веб-страниц» я поместил image.jpg.

Затем я сгенерировал файл .war и поместил его в tomcat / webapps

когда я пытаюсь сделать запрос к localhost: 8080 / MyServlet / image.jpg - файл не загружен, вместо этого выполняется сервлет.

я хочу, чтобы файл существовал - он его вернет, иначе запустит сервлет.

Есть ли быстрый способ реализовать это?

Ответы [ 3 ]

3 голосов
/ 22 октября 2011

Отображение вашего сервлета на / или /* не является стандартным способом для реализации сервлетов.В общем случае вы отображаете глобальные сервлеты (контроллеры) на путь типа /myServlet/*.Стандартный сервлет Tomcat уже доступен для обслуживания вашего статического контента.Это настроено в <tomcat>/conf/web.xml.Извлечение из встроенной документации:

  <!-- The default servlet for all web applications, that serves static     -->
  <!-- resources.  It processes all requests that are not mapped to other   -->
  <!-- servlets with servlet mappings (defined either here or in your own   -->

Если вы будете следовать вышеупомянутому подходу, URL-адреса в вашем приложении могут выглядеть следующим образом:

Статический ресурс: http://myserver/myWAR/images/image.gif

Ваш сервлетURL: http://myserver/myWAR/myServlet/* (*: = подстановочный знак)

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

1 голос
/ 22 октября 2011

Обычно вы справляетесь с этим через отображение сервлета или откладываете статические ресурсы от отображения сервлета.

В противном случае, если запрос сопоставляется с вашим сервлетом, вам нужно либо (а) проверить файл в сервлете и перенаправить на реальное имя файла, либо самостоятельно вернуть изображение обратно, либо (б) написать фильтр, который знает достаточно о структуре вашего веб-приложения, чтобы понять, должен ли запрос обрабатываться вашим сервлетом или контейнером.

Если бы вы описали свой вариант использования, было бы легче быть более полезным.

0 голосов
/ 22 октября 2011

Для статических файлов вам, скорее всего, нужно просто использовать http://localhost:8080/image.jpg (т.е. без части MyServlet в URL)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...