request.setAttribute()问题

w382572397 2010-04-05 04:34:28
页面一
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'MyJsp.jsp' starting page</title>

</head>

<body>
<form action="${pageContext.request.contextPath }/temp/ss.jsp" method="get">
<%
request.setAttribute("a","aaa");
out.write(request.toString());
%>
<input type="submit"/>
</form>
</body>
</html>

页面二
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP 'ss.jsp' starting page</title>

</head>

<body>
---------------[<%=request.getAttribute("a") %>]---------------
---------------[<%out.write(request.toString()); %>]---------------
</body>
</html>

请问为什么在页面二用request.getAttribute("a")就取不到值了?
...全文
1386 37 打赏 收藏 转发到动态 举报
写回复
用AI写文章
37 条回复
切换为时间正序
请发表友善的回复…
发表回复
sd6221637123 2012-09-18
  • 打赏
  • 举报
回复
[Quote=引用 36 楼 的回复:]

谢谢各位!!! 我明白了!!!
[/Quote]

以后就用session的存储方式吧。request实在不好掌握,但是request也有自己的优点,因为他的生命周期很短暂,如果只是用到一次,那么正好符合它的特性,还节省了服务器的资源。
cjh021222 2010-04-10
  • 打赏
  • 举报
回复
这个例子可以让你很好的学习一下一下REQUEST对象的生命周期了,仔细研究一下转发和重定向之间的工作流程吧,很有帮助

另外顶下29楼~解释的很透彻
w382572397 2010-04-10
  • 打赏
  • 举报
回复
谢谢各位!!! 我明白了!!!
aveinsun 2010-04-07
  • 打赏
  • 举报
回复
你真的要这么做,将这个值跟着Action一起带过去
a.aciton ? aaa=+"aaa";
在action里面request.getParameter(aaa);
然后request.setAttribute("aaa",aaa);
跳到第二个页面的时候就可以取到咯!session毕竟范围大了点,浪费哟!
yuyeyi 2010-04-07
  • 打赏
  • 举报
回复
传到代码在传出去
zllzlw520 2010-04-07
  • 打赏
  • 举报
回复
求助:怎样把javascript返回值添加至url参数
linfanhe 2010-04-06
  • 打赏
  • 举报
回复
要搞懂request内置对象的生命周期和属性范围!根本就不是同一个
domeki 2010-04-06
  • 打赏
  • 举报
回复
request生命周期的问题,请翻看教材。。。
leihuanhuan123 2010-04-06
  • 打赏
  • 举报
回复
request是请求,你不是一个request的
海会圣贤 2010-04-06
  • 打赏
  • 举报
回复
.............
liuhuan851002 2010-04-06
  • 打赏
  • 举报
回复
学习一下!
smallbear923 2010-04-06
  • 打赏
  • 举报
回复
学习了……
session 是个好东西……
czmchen 2010-04-06
  • 打赏
  • 举报
回复
request存在只对forward的页面有效
fengye_aitk 2010-04-06
  • 打赏
  • 举报
回复
确实楼主这样的用法很让人费解。这种应用应该是没有必要的。
x_pengcheng 2010-04-06
  • 打赏
  • 举报
回复
放在Session里
cust28 2010-04-06
  • 打赏
  • 举报
回复
不是同一个request当然获取不到了
你可以放到session或者application中
xiaoxi29 2010-04-06
  • 打赏
  • 举报
回复
这么说吧,重定向和转发理解吧?
我也学完没多久,我是这么理解的,这是一个重定向的过程,
首先你提交了一个请求页面给服务器,服务器返回给你第一个页面,此时产生一个request对象,
你将a对象放入了这个request,然后点击提交!
关键就是在这里了,服务器根据表单中的action="${pageContext.request.contextPath }/temp/ss.jsp"
告诉浏览器,让浏览器重新发送一个${pageContext.request.contextPath }/temp/ss.jsp的请求,
当浏览器向服务器发送了ss.jsp页面请求时,又产生了一个request对象,也就是你在ss.jsp页面中所用的request
这便是一个重定向,重定向是不能共享request隐含对象的,
所以在ss.jsp页面中通过request当然是得不到a这个对象的

我奇怪的是你为什么要这么写呢,表单一般是用来提交数据的,然后通过request.getParemater("...")来获取参数,为什么你要在表单中加入这样的代码呢?很费解....
xiongyuanming 2010-04-06
  • 打赏
  • 举报
回复
貌似还真不行
Einst 2010-04-05
  • 打赏
  • 举报
回复
上面已经解析得非常清楚了。。。路过接分
如果还不明白,那真的...
hjh811 2010-04-05
  • 打赏
  • 举报
回复
上面已经解析得非常清楚了。。。路过接分
如果还不明白,那真的...
加载更多回复(17)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧