3

Весеннее приложение Я использую объявляет Tuckey UrlReWrite фильтр и затем устанавливает правила перезаписи, как следующее:Зачем использовать фильтр перезаписи Url?

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

Почему это?

Will Spring не сможет распознать запросы, которые не идут на адрес /app/?

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

ответ

6

Представьте, что вы хотите, чтобы 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> 

EDIT: Обратите внимание, что с весны 3.0.4 есть <mvc:resources /> декларация. В этом объявлении DispatcherServlet будет обслуживать статический контент из подпапки /resources вашего webapp, поэтому переписывание не потребуется (см. http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/).