2012-06-19 65 views
0

我在我的web應用程序中使用Spring MVC。對於每個請求,我想準備環境,例如從數據存儲加載一些數據並保存,以便每個控制器都可以訪問該信息。我認爲這就是過濾器的用途(等等)。我可以在過濾器中附加一個信息到request變量,但是如何從控制器訪問它?還是有一個更好的方法來做到這一點?Spring MVC - 如何將數據從過濾器傳遞到控制器

回答

1

我想此刻你的問題是如何獲得的數據請求,設置過濾器內(已由你完成),然後在你的控制器的hamdlerMapping方法內訪問它(你想實現)。

我同意以前的答案,但如果你決定這樣做,那麼我認爲你應該遵循我的答案。

在處理程序方法中,您已將您的請求映射到您的控制器中,您可以在HttpServletRequest request的方法簽名中擁有一個參數,它將包含您在過濾器中設置的請求參數。你可以從你的控制器中的這個請求對象中獲取它。

希望這可以幫助你。乾杯。

2

我不明白爲什麼這是一件好事,過濾或不行。

如果您確實擁有每個控制器所需的只讀數據,我認爲在啓動時加載的緩存解決方案是一個更好的主意。我不會用過濾器做到這一點,並且我不會用這樣的事情來減輕每一個請求的負擔。一旦完成,爲什麼不斷重複這個動作?

0

@duffymo是正確的,但如果你真的想這樣做,我建議你使用攔截器 http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor

+0

過濾器只不過是一個HTTP特定的攔截器。我的評論關於沒有負擔這樣的事情的每一個請求仍然站立。 – duffymo

+0

謝謝。但是這個問題還沒有完全解答......我如何將攔截器的任何數據傳遞給控制器​​?我們來看看Spring文檔中用於檢查開放時間的示例。如果我想在每個處理程序中使用當前小時值,該怎麼辦?是的,我可以把它計算在內,但是接下來我會在每次請求中做兩次相同的事情,並且我還必須爲每個處理程序添加一行冗餘代碼。我知道這不是一個很好的例子,但是希望你現在明白我的觀點。 – tobik

+0

你可以使用request.setAttribute(arg0,arg1);他們可以在控制器中檢索該日期,或者可以在會話中檢索該日期 –

相關問題