2014-01-17 34 views
1

當一個servlet過濾器被調用對應於一個歡迎文件的請求時,有沒有什麼辦法讓過濾器獲取正在提供的特定歡迎文件的名稱? getRequestURL停止在上下文根(這可能是因爲這是請求的url)。 我可以將過濾器映射到每個可能的歡迎文件,但將它們全部放在同一個過濾器中併爲每個過濾器做一些稍微不同的操作會更方便。如何識別servlet過濾器中的哪個歡迎文件?

+0

刪除所有可能的默認索引文件,但一個,然後你就會總是知道哪一個被服務。 – developerwjk

+0

這實際上是我目前使用的方法,以避免識別特定的受歡迎文件。但是,如果有方法可以真正識別已提供的特定歡迎文件,我想知道。 – CraftWeaver

+0

爲什麼你想要在不控制它的情況下提供不同的歡迎文件? (即像在過濾器中檢查首選語言併爲每種語言提供不同的文件) – developerwjk

回答

0

簡單我認爲只是在Session of Welcomefile.jsp中使用URL並在Filter中使用。

在你的情況歡迎文件不是JSP,在過濾器爲.xhtml GET HttpServletRequest.getRequest URL()而不是HttpServletRequest.getRequest URI()

+0

對不起,但我不明白這個建議。請求是'http:// localhost/MyApp /'。提供的歡迎文件是'index.xhtml'。在servlet過濾器中,'HttpServletRequest.getRequestURI()'返回「/ MyApp /」。另外,在調用servlet過濾器時,會話中沒有任何屬性'HttpServletRequest.getSession()。getAttributeNames()'[at all]。 – CraftWeaver