页面刷新request里面的值丢失了

aimiracle 2009-08-17 09:42:13
首先在servlet里面使用
String qid="123",aid="456";
request.setAttribute("qid",qid);
request.setAttribute("aid",aid);
request.getRequestDispatcher("index.jsp").forward(request,response);

在index.jsp页面里

<input name="qid" value="${requestScope.qid}">
<input name="aid" value="${requestScope.aid}">

遇到问题如下:
第一次执行,index.jsp的两个文本框里显示了123 456
但是一刷新,就没有值显示了
为什么呀?
...全文
579 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
三界五行外 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huangjingying121566 的回复:]
如果是浏览器直接请求servlet,那么再次刷新,相当于再次向浏览器发送一次请求,这么做是有值的,如果搂主是通过提交表单,进而请求servlet,那么势必搂主得再提交一次
[/Quote]
他那个值是在servlet里面赋的,不管哪里提交效果是一样的
jianchencool 2009-08-17
  • 打赏
  • 举报
回复
HttpServletRequest的作用域没搞清楚!
三界五行外 2009-08-17
  • 打赏
  • 举报
回复
没法重现你的问题,我测试了一下,刷新前后显示的是一样的
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
算了,我还是放在session里面,嘿嘿。。
谢谢大家咯!!
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 huangjingying121566 的回复:]
如果是浏览器直接请求servlet,那么再次刷新,相当于再次向浏览器发送一次请求,这么做是有值的,如果搂主是通过提交表单,进而请求servlet,那么势必搂主得再提交一次
[/Quote]

我是通过提交表单,进而请求servlet的。
lababawan 2009-08-17
  • 打赏
  • 举报
回复
存session里就可以了

或者你写个脚本,把F5屏蔽掉
  • 打赏
  • 举报
回复
如果是浏览器直接请求servlet,那么再次刷新,相当于再次向浏览器发送一次请求,这么做是有值的,如果搂主是通过提交表单,进而请求servlet,那么势必搂主得再提交一次
  • 打赏
  • 举报
回复
不知搂主是如何发出的请求的?
YSocket 2009-08-17
  • 打赏
  • 举报
回复
request只在页面跳转时传递参数 传递完成之后就失效
如果用session application等作用域 可以实现楼主的想法
jiazaibo 2009-08-17
  • 打赏
  • 举报
回复
唉!你连参数都没有,肯定是NULL了
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 usherlight 的回复:]
这个值放在request里面本来就是在request范围内有效的,你刷新了自然就没有了。
你看一下,你的url
[/Quote]

我没有把值放在url里
就直接在servlet里用request.getParameter()取的值
jiazaibo 2009-08-17
  • 打赏
  • 举报
回复
再就是把你的URL弄成这样 …….jsp?qid = 123 & aid = 456
usherlight 2009-08-17
  • 打赏
  • 举报
回复
这个值放在request里面本来就是在request范围内有效的,你刷新了自然就没有了。
你看一下,你的url
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 jiazaibo 的回复:]
要想刷新后也有值,就用Session作用域吧,session.setAttribute("qid",qid);
[/Quote]

就只有这个办法吗?
拉胯哥 2021-07-29
  • 举报
回复
@aimiracle 没用
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lbloveoop 的回复:]
其实问题很简单,你第一次执行的是serverlet有了请求,request中才有值,但是第二次你刷新的时候没有向Servlet发出请求,所以就没有值。
[/Quote]

我在servlet里面写了

System.out.print(request.getParameter("qid"));

显示的是null

没有取到<input name="qid" value="${requestScope.qid}">这个对象

....???
jiazaibo 2009-08-17
  • 打赏
  • 举报
回复
要想刷新后也有值,就用Session作用域吧,session.setAttribute("qid",qid);
mianfeidog 2009-08-17
  • 打赏
  • 举报
回复
2楼的解释很勉强。
jiazaibo 2009-08-17
  • 打赏
  • 举报
回复
第一次servlet传到JSP的请求中带有值,当你刷新的时候,已经不是Servlet请示JSP页了,而是你的浏览器请求JSP页了,此时你浏览器中的request不带值,所以不会显示。
aimiracle 2009-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lycgxy 的回复:]
${qid}这样就可以显示了吧,试试
[/Quote]
${qid} 和${requestScope.qid}是一样的吧,呵呵。。。
还是不行哦
lbloveoop 2009-08-17
  • 打赏
  • 举报
回复
其实问题很简单,你第一次执行的是serverlet有了请求,request中才有值,但是第二次你刷新的时候没有向Servlet发出请求,所以就没有值。
加载更多回复(1)

81,092

社区成员

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

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