我想解決的問題是,我想檢查所有傳入的GET網址對數據庫。如果網址存在於數據庫中,它將被傳遞給certein控制器。我使用的是Spring 3.0。在任何HandlerMapping之前修改HttpServletRequest?
首先,我嘗試製作一個interceptor並將其添加到DefaultAnnotationsHandlerMapping。原來,我無法修改preHandle()中的URL。該計劃是修改請求中的url,然後讓註釋的控制器處理剩下的部分。
接下來我試着做一個自定義的HandleMapping。我擴展了AbstractUrlHandlerMapping並創建了我自己的getHandlerInternal(),它返回一個帶有控制器名稱的String,並且這個工作正常。但我更喜歡一個解決方案,我可以修改請求中的url並讓註釋的控制器處理它。
在寫這篇文章的時候,我開始想到可能servlet過濾器是最合適的解決方案。如果是這種情況,我可以讓Spring將EntityManager注入到過濾器中嗎?我可以擴展的任何Spring類,使這更容易嗎?
解決第一段中問題的最正確方法是什麼?如果是servlet過濾器,請給我一些關於如何寫它的指示。
謝謝你的回答,它讓我意識到我是過度工程師的解決方案。一個簡單的'RequestMapping(value =「/ *」)似乎是我需要的。 – 2009-12-29 09:57:11