jsp頁面間的傳值

很多的時候我們只是把我們需要的數據,查詢出來,然後用request.setAttribute("" ,"" )方法保存這個數據集合。再在我們能跳轉到的下一個jsp頁面把我們之前保存的數據從request.getAttribut().拿出來,用於顯示用。

但是當我們還希望把這個數據繼續傳遞到下一個jsp頁面的時候,我們應該怎麼去做呢。

第一個方法:隱藏字段
在jsp頁面中用一個隱藏字段,比如<input type="hidden" id="", name="xxx", value="<%=valuetoPass%>">.這樣你我們就可以在本次請求的時候,用request.getParameter("xxx");來拿到這個字段了。這個方法是可以的。但是如果我們要傳遞一個Map或者List這樣的集合類型的數據結構到下一個頁面呢。因爲request.getParameter只能得到String字段,這個時候我們就不能用隱藏字段了。

於是

第二個方法就是:session

很多的時候我們都會在面試的時候被問到這個問題,所以我們就這個方法來做一下。

之前一直以爲放在request裏也是可以的,但是我在實際的操作過程中並沒有成功。比如:

一個請求過來之後,我們拿到了產品列表信息。現在我們要把產品信息按產品類別分類,並把這些分類信息發放在一個Map裏面。如:A類產品有:111,222,333三種,我們就把111,222,333這三個產品放到一個list裏面,然後,把這個list按照A的key保存在Map裏。即Map.put(“A”, list)。這樣我們在要跳轉到的jsp頁面就能夠按產品類型進行分類取值了。

好了,現在我們把準備好的map放在request.setAttribute("map", map), 然後頁面跳轉到了test1.jsp, 這樣我們就可以在test1.jsp頁面拿到我們要的數據。然後,再當我們要把這個map集合傳遞到test2.jsp頁面的時候,很顯然的一個想法就是再把這個map在request裏set一遍就可以了。即

Map<String, List<TproductInfo>> catMap = (Map<String, List<TproductInfo>>) request.getAttribute("catMap");
	request.setAttribute("catMap", catMap);
然後請求處理中,還未跳轉到test2.jsp頁面之前。
request.getAttribute("catMap")
這樣子是取不到值的。

但是如果你這樣子

Map<String, List<TproductInfo>> catMap = (Map<String, List<TproductInfo>>) request.getAttribute("catMap");
session.setAttribute("catMap", catMap);
然後在後臺
Map<String, List<TproductInfo>> catMap = (Map<String, List<TproductInfo>>) request.getSession().getAttribute("catMap");

就能取到值。


第三:還可能從jsp:param的jsp指令來傳,這個暫時沒有去試過。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章