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指令来传,这个暂时没有去试过。



原文地址:https://www.cnblogs.com/aukle/p/3230927.html