Зачем использовать Url Rewrite Filter весной? - PullRequest
3 голосов
/ 24 августа 2010

Приложение Spring, которое я использую, объявляет Tuckey UrlReWrite Filter и устанавливает правило перезаписи следующим образом:

<rule>
    <from>^/(.*)$</from>
    <to last="true">/app/$1</to>
</rule>

Зачем это делать?

Разве Spring не сможет распознавать запросы, которые не отправляются на /app/ url?

Иначе в чем преимущество этого перенаправления?

1 Ответ

6 голосов
/ 24 августа 2010

Представьте, что вы хотите, чтобы Spring MVC DispatcherServlet обрабатывал все URL-адреса в вашем приложении, кроме URL-адресов статического содержимого.Если вы попытаетесь сделать это напрямую с <url-pattern>/</url-pattern>, это сопоставление будет иметь приоритет над статическим содержимым.

С помощью фильтра перезаписи вы можете указать исключения для статического содержимого, например:

<urlrewrite default-match-type="wildcard">
    <rule>
        <from>/staticContentHere/**</from>
        <to>/staticContentHere/$1</to>
    </rule>
    <rule>
        <from>/**</from>
        <to>/app/$1</to>
    </rule>    
</urlrewrite>

РЕДАКТИРОВАТЬ: Обратите внимание, что начиная с Spring 3.0.4 существует <mvc:resources /> декларация.С помощью этого объявления DispatcherServlet будет обслуживать статический контент из подпапки /resources вашего веб-приложения, поэтому перезапись не потребуется (см. http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/).

...