2011-02-17 60 views
1

問題我有以下結構的Web應用程序:的java:在過濾器上和servlet映射

TOMCAT_HOME 
    | 
    webapps 
    |_myapp 
      |-html/ 
      |-various directories 
      |-WEB-INF/ 
      |-index.html 

應用程序具有被登記了各種路徑的各種的servlet。
應用程序本身可以通過http://IP:PORT/myapp/
訪問這個課程導致得到index.html(在歡迎列表中)。
我的問題是,如何將我註冊一個過濾器的根目錄的具體的訪問,但子目錄,即該URL映射/* 如果我把作爲url-pattern的/似乎不起作用。
所以過濾器只會截取這個請求http://IP:PORT/myapp/而不是http://IP:PORT/myapp/pathhttp://IP:PORT/myapp/servlet/path
此外,過濾器將攔截類似於我所瞄準的請求的http://IP:PORT/myapp/index.html之類的請求。

感謝

回答

1

你可以很容易地測試/並做你的事情,否則讓它通過。使用/*網址格式。

@Override 
public void doFilter(ServletRequest req,ServletResponse res,FilterChain chain) 
    throws IOException,ServletException{ 

    HttpServletRequest request=(HttpServletRequest)req; 
    String path=request.getServletPath(); 

    if(path.equals("/") || path.equals("/index.html"){ 
     // do your thing 
    } 

    chain.doFilter(req,res); 
} 
2

爲什麼不設置過濾器/index.html呢?它不會導致你的子目錄被過濾。

+1

確實。您只需將其添加爲「welcome-file」即可。 – BalusC 2011-02-17 20:05:52

+0

那麼`http:// IP:PORT/myapp /`也被捕獲? – Cratylus 2011-02-17 20:25:48