轉發和重定向,javaee程序員都懂得。
重定向傳值直接就攜帶,沒有傳值問題
但是對於轉發實際上是將瀏覽器定位定另一個頁面(可以跨域,不討論),頁面傳值有兩種方式:
- url攜帶參數
- session保存到重定向頁面取出。
明顯第一種方式太粗糙,尤其是攜帶敏感信息的時候,但是第二種方式的話會把一些不是很重要的數據放到Session,多耗性能啊!!其實我們的傳值也許只是用在跳轉到頁面期間,那我們在跳轉用完後在從Session中剔除不就可以了嗎!!對,很好!這麼牛X的Spring會沒想當嗎?當然不會!!!
Spring提供了Flash這個東西,實際就是完成上述的功能,但是我們怎麼用呢?
ps:開始研究DispatcherServlet在默認屬性文件中就看到一行,什麼鬼?
Flash 想想我們以前常用的SD card Flash 。原來是閃存的意思。
org.springframework.web.servlet.FlashMapManager=org.springframework.web.servlet.support.SessionFlashMapManager
繼續:
Flash怎麼用呢
很簡單Model都知道,但是他有一個子接口:RedirectAttributes
裏面定義了額外的方法:
RedirectAttributes addFlashAttribute(String attributeName, Object attributeValue);
RedirectAttributes addFlashAttribute(Object attributeValue);
Map<String, ?> getFlashAttributes();
通過這些方法我們就可以實現在重定向過程中傳值,還不用管理他們,so easy!