3

我使用彈簧的應用程序聲明瞭一個Tuckey UrlReWrite篩選,然後建立一個重寫規則如下所示:爲什麼在Spring中使用Url重寫過濾器?

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

爲什麼這樣做?

請問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> 

編輯: 注意,因爲春天3.0.4有一個<mvc:resources />聲明。通過此聲明,DispatcherServlet將爲您的web應用的/resources子文件夾提供靜態內容,因此不需要重寫(請參閱http://blog.springsource.com/2010/07/22/spring-mvc-3-showcase/)。