jsp request.getAttribute 取不到值

来源:百度知道 编辑:UC知道 时间:2024/05/07 06:31:26
servlet:
req.setAttribute("lbs1",lbs);
session.setAttribute("lbs1",lbs);
resp.sendRedirect(url);
jsp:
ArrayList lbss = new ArrayList();
lbss = (ArrayList)request..getAttribute("lbs1");

后来我尝试用session 但是我这是搜索返回页面 如果用session 总是取到第一次的结果

我上网搜了下 人家说request有范围 看了半天也没看懂什么意思
高手们帮助下啊 解释清楚继续加分

楼主得问题主要是处在这里:
resp.sendRedirect(url); 这个是重定向;
应该用RequestDispatcher;

这个是都是什么意思呢?转化成生活语言就是:

我是浏览器,你是servlet。我给你发了个请求(request)让你帮我去买烟。
但是你不想去,你给了我个回了个响应告诉我:你去找XXX.jsp(就是你写得那个JSP),他会帮你买。我收到响应后,又重新给XXX.JSP发了个请求(之前你在request存得东西就没了,那个requset被销毁了),所以你取不出来。这就是重定向。
什么叫RequestDispatcher呢。就是说。我给让你给我去买烟但是你不想去,这时候你没告诉我你不想去,你直接把request给了xxx.jsp让他去买(这时候没有新建requset,所以你在JSP里能取出来存得值),他买了之后吧烟给你了,你又吧烟给我了,但是我不知道这烟是xxx.jsp买的,我只知道是你(servlet)买得。

就是这个意思。希望你能明白。

也就是说,如果你在 A 里存了个东西 想在 B 里取出来。
如果你用了resp.sendRedirect(url); ,就要吧东西存在session里,在 B 里
用session取。
如果你用了RequestDispatcher rd = request.getRequestDispatcher("url");
rd.forward(request, response); 那么你就可以存在requset里。

你往session里存 request怎么能拿到呢?
应该是:lbss = (ArrayList)session.getAttribute("lbs1");
如果你想拿到request那个
不能用转发,把resp.sendRedirect(url); 改成

重定向request.getRequestDispatcher(url).forward(request,response);//url就是(/xx.jsp