Уберите изображения, CSS и JS из сервлет-картографии - PullRequest
1 голос
/ 17 ноября 2008

Я использую следующее отображение сервлета в моем web.xml файле:

<servlet>
    <servlet-name>PostController</servlet-name>
    <servlet-class>com.webcodei.controller.PostController</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>PostController</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping> 

Чтобы сделать какой-то поиск. например:

 <a href="http://www.myweb.com/The" rel="nofollow noreferrer">http://www.myweb.com/The</a> search string here 

Но проблема в том, что CSS, JS и изображения обрабатываются как поисковый запрос.

Существуют ли шаблоны, которые удаляют * .css, * .js, * .gif и т. Д., Поэтому запросы не должны проходить через мой контроллер?

Большое спасибо, пока, пока!

Ответы [ 3 ]

2 голосов
/ 17 ноября 2008

На ум приходят два варианта:

1) Как правило, в таком веб-приложении URL-адреса «действий», которые обрабатываются сервлетом, получают либо подкаталог, например «/actions/*», либо расширение, например «*.action», либо «*.do» (это то, что делает Struts). Таким образом, понятно, какие URL предназначены для сервлета. Это скорее всеобъемлющее решение, а не эксклюзивное, о котором вы просите, но я не думаю, что то, что вы хотите, возможно.

2) Немного более авантюрный вариант - настроить сервер веб-приложений за установкой Apache, которая обслуживает изображения, CSS и т. Д. В виде плоских файлов, отправляя на сервер приложений только все остальное. Как правило, это делается для того, чтобы снять нагрузку с сервера приложений. Вам потребуется скопировать все эти файлы в отдельный каталог для обработки Apache.

1 голос
/ 17 ноября 2008

Вместо того, чтобы вносить в черный список определенные расширения, вы можете рассмотреть внесение в белый список шаблонов URL, которые вместо этого попадают в ваш сервлет PostController. Например:

 <servlet>
    <servlet-name>PostController</servlet-name>
    <servlet-class>com.webcodei.controller.PostController</servlet-class>
 </servlet>
 <servlet-mapping>
    <servlet-name>PostController</servlet-name>
    <url-pattern>/*.jsp</url-pattern>
 </servlet-mapping>

, если вы используете простые JSP. Теперь запросы HTTP GET для файлов с расширением * .css, * .gif и т. Д. Не будут перенаправляться через этот сервлет.

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

0 голосов
/ 19 февраля 2009

Jetty интерпретирует файл web.xml так, как вы этого ожидаете. Я обнаружил эту проблему недавно, когда переместил приложение из Jetty в Tomcat, и внезапно не смог больше видеть мои статические ресурсы. Очень расстраивает.

...