您的位置首页百科知识

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

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

”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 = (Object)request.getAttribute("cha");%>,叫人家怎么去显示个Object值呢...

<%String a=request.getAttribute("cha").toString() %>

没有理由取不到的

实在不行就放session里

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

request.getSession.getAttribute("cha",cha);

你可以用EL表达式拿啊

${cha},器呵呵

抖音看短剧