关于request.setAttribute()的用法 急死我了

来源:百度知道 编辑:UC知道 时间:2024/06/06 14:31:44
首先我在servlet里定义到long begin = System.currentTimeMillis();
long end = System.currentTimeMillis();
long cha = end-begin;
request.setAttribute("cha", cha);
然后转到a.jsp页面
<%Object a = (Object)request.getAttribute("cha");%>
再用<%=a%> 取值 怎么是 null
大家帮我分析下
EL表达式怎么拿啊 说详细点谢谢 我这有点不明白!

那应该怎么弄啊 说点又建设性的啊
还是不对 以前的页面直接被转走了
forward是可无端转向 sendRedirect是服务端转向 我想在服务端转

”forward是客户端转向 sendRedirect是服务端转向 我想在服务端转“
以上语句完全理解错误!!

forward是转向,将现在的请求转交,他只能在同一个容器里使用同时保存客户的请求状态。
sendRedirect是重定向,可以在同一个容器里使用,也可以发送其他容器请求,但是会丢失请求信息。它等于重发一个请求。
request.setAttribute是在请求域里面加了一个请求的参数,所以在sendRedirect以后是无法取到request.setAttribute的请求的。

解决办法(两种):
1、如果你是在同一个服务器(容器)里做的转向工作。那么可以这样

request.setAttribute("cha", cha);
改成
request.getSession().setAttribute("cha", cha);

然后
<%Object a = (Object)request.getSession().getAttribute("cha");%>
其他不变。

2、你在Servlet里面这样写:

response.sendRedirect(“a.jsp”);
改成
response.sendRedirect("a.jsp?a=cha");
那么在a.jsp页面上直接
<%=request.getParameter("a")%>
就可以了,不用写<%Object a = (Object)request.getAttribute("cha");%>.

当然用Forward也可以实现,我就不再写了。

估计你是在servlet里面是sendRedirect的转向,还有一个是forward转向,这两个是不一样的,使用forward式一下

我觉得最没有理由就是<%Object a =