2010-09-10 21 views
7

Bir URL'nin köküne nasıl bir filtre eşlenebilir? Tomcat 7.0.2 kullanıyorum ve bir uygulamayı ROOT.war olarak kullanıyorum. Karşılama sayfası sign_in.xhtml. İstemcinin sitenin kökeni için bir istek gönderdiğinde (yani yalnızca alan adı) veya istemcinin sign_in.xhtml istediğinde bir filtre çalıştırmak istiyorum. İşte ben bugüne kadar ne var: sign_in.xhtml içinServlet filtresi url eşleştirmesi

<filter> 
     <filter-name>My filter</filter-name> 
     <filter-class>com.myApp.myFilter</filter-class>   
    </filter> 
    <filter-mapping> 
     <filter-name>My filter</filter-name> 
     <url-pattern>/sign_in.xhtml</url-pattern> 
    </filter-mapping> 

İstekleri doğrudan başarıyla filtreyi çağırmak, ama filtreyi çağırmak için root için istekleri nasıl emin değilim. Servlet spec göre (sürüm 3,0)

<url-pattern>/</url-pattern> 

varsayılan servlet'dir haritalar ve köküne boş bir dize haritalar.

"boş dize (" ") tam olarak yani uygulamanın içerik kökü, eşleştiren özel bir URL modeli, forma http://host:port//Bu durumda yol bilgisi istekleri olduğunu. Burada spec alakalı bölüm var '/' ve sunucu yolu ve bağlam yolu boş dizedir (““). ” Ancak, aşağıdaki URL kalıplarının her ikisi de Tomcat'in bir istisna atmasına neden olur.

<url-pattern></url-pattern> 
<url-pattern>""</url-pattern> 

Bu konuda biraz ışık tutabilirse gerçekten çok memnun olurum. Teşekkür ederim.

Andrew

cevap

7

<url-pattern>/</url-pattern> kökü üzerindeki istekler için çalışmalıdır. Onu denedin mi?

Amacınız tüm isteklerini filtrelemekse, <url-pattern>/*</url-pattern>'u kullanmalısınız.


Güncelleme: birini ve diğer dışlamak için, ben (web.xml ve @WebFilter(urlPatterns={"/"}) ikisini de kullanarak) Tomcat 7'de / ait url-pattern test edilmiş ve beklendiği gibi gerçekten de işe yaramadı. /'un url-pattern'u, Tomcat 6'da (Servlet 2.5) ve Glassfish v3'te (Servlet 3.0) beklendiği gibi çalışır. Tomcat 7'deki bir hatadan şüpheleniyorum, bu yüzden bunun hakkında issue 49914 bildirdim.

+0

Bu BalusC'ye baktığınız için teşekkür ederiz. Kullanıcının şifresini değiştirmesi gerekiyorsa yönlendirmeyi zorlamak niyetindeyim. Bir filtre uygun çözüm gibi görünüyor. Sanırım 7.0.3'ü beklemeli veya farklı bir şey bulmam gerekecek. Herhangi bir fikir? –

+0

Yalnızca istek URI'sı boş olduğunda harekete geçen '/ *' üzerinde dinleyen bir filtre. – BalusC

+0

Bir adım atacağım ve Tomcat hatası düzeltildikten sonra url-patten'i güncelleyeceğim. –

İlgili konular