servlet跳转既改变了地址栏又能传参



servlet跳转既改变了地址栏又能传参。

1。RequestDispatcher.forward()
这种方法的话 可以把参数用request.setAttribute()放入,但是地址栏是不变的

2。response.sendRedirect()
这种方法的话,地址栏是改变了 ,但是貌似不能传参。我想传的参数是ResultSet类型

我又不想把它放入session中,因为这个ResultSet只使用一次。。。

于是我郁闷了。。。。。请问能解决么

分数不多了 见谅
更多 0 分享到:
相关主题推荐: servlet session 类
相关帖子推荐:
在线等 关联表查询的 求count简单正在做C++PrimerPlus编程练习题,问题来了。。。java类中声明动态数组的情况,很实用的问题。新人练习—指纹门锁系统。讨论一下权限设计ORA-00054,资源正忙深入求解Linux Qt中的QDir类的相关问题,请大神指导!!很急!!!!请相助!!!有一个5位数,如:00001 数字的增长率为1,00002、00003这样。 当他到99999的时候,就让他变成A0001、A0002、A0003,以此类推

对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理 回复次数:18
AWUSOFT
关注
AWUSOFT
AWUSOFT
等级:Blank
#1 得分:0 回复于: 2010-07-06 15:00:09
带几个参数吧,到那边了再重新查询
关注CSDN社区微信 投稿有礼了!对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
ChDw
关注
ChDw
ChDw
等级:Blank
#2 得分:20 回复于: 2010-07-06 15:02:41
这个是不行的。但是你可以考虑放入session中,但是key值是动态生成的(例如UUID之类),然后redirect的时候带这个key作为参数

这样ResultSet就只会被使用一次,用完就关闭了。
不过这样可能在前端出错的情况下,导致你的ResultSet没有关闭,这个需要处理。
如果您对CSDN论坛有意见和建议 请直接在本帖指教对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
daocha
关注
daocha
daocha
等级:Blank
#3 得分:0 回复于: 2010-07-06 15:03:02
在地址欄裡面傳參數唄。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
simaa0106
关注
simaa0106
simaa0106
等级:Blank
#4 得分:0 回复于: 2010-07-06 15:07:10
把参数加到地址栏就完了嘛。
url=http://www.sina.com.cn?username=user&password=123
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#5 得分:0 回复于: 2010-07-06 15:10:59
想传ResultSet的话,怎么在地址栏加参数呢
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
lacus87
关注
lacus87
lacus87
等级:Blank
#6 得分:0 回复于: 2010-07-06 15:12:29
既改变了地址栏又能传参
有要求地址栏一定要是静态页面吗?

如果不是的话你完全可以先把参数放入session,redirect到另外一个servlet,拿出参数然后从session中remove掉,然后这个servlet用request设置参数include一个JSP页面展示
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#7 得分:0 回复于: 2010-07-06 15:12:42
引用 2 楼 chdw 的回复:
这个是不行的。但是你可以考虑放入session中,但是key值是动态生成的(例如UUID之类),然后redirect的时候带这个key作为参数

这样ResultSet就只会被使用一次,用完就关闭了。
不过这样可能在前端出错的情况下,导致你的ResultSet没有关闭,这个需要处理。
问一下我单独关闭了数据库的connection连接 还需要关闭ResultSet么
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
lacus87
关注
lacus87
lacus87
等级:Blank
#8 得分:0 回复于: 2010-07-06 15:13:02
问题是你只要刷新一次,所有数据都会丢失
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#9 得分:0 回复于: 2010-07-06 15:16:39
引用 6 楼 lacus87 的回复:
既改变了地址栏又能传参
有要求地址栏一定要是静态页面吗?

如果不是的话你完全可以先把参数放入session,redirect到另外一个servlet,拿出参数然后从session中remove掉,然后这个servlet用request设置参数include一个JSP页面展示
页面不是静态的,下一个页面是要读取ResultSet的。
但是:
然后这个servlet用request设置参数include一个JSP页面展示
是什么意思。。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
wuhaozhiyuan
关注
wuhaozhiyuan
wuhaozhiyuan
等级:Blank
#10 得分:0 回复于: 2010-07-06 15:16:52
在response.sendRedirect()的URL中加入参数,如:
Java code
?
1
resp.sendRedirect(“http://localhost:8000/context/jsp/message.jsp?message=message”);


在页面上(message.jsp)使用如下获取:
Java code

?
1
String map = (String)request.getParameter(“message”);
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#11 得分:0 回复于: 2010-07-06 15:18:24
引用 8 楼 lacus87 的回复:
问题是你只要刷新一次,所有数据都会丢失
。。对 这个问题我没考虑过。。
刷新的问题我不太懂。。。

如果我从a.jsp发送一个表单到b.jsp
然后在b.jsp页面刷新了一次,那request的信息丢失么
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#12 得分:0 回复于: 2010-07-06 15:19:40
引用 10 楼 wuhaozhiyuan 的回复:
在response.sendRedirect()的URL中加入参数,如:

resp.sendRedirect(“http://localhost:8000/context/jsp/message.jsp?message=message”);

String map = (Str……
但是我要传ResultSet啊。。。这个只能传字符串的
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
wuhaozhiyuan
关注
wuhaozhiyuan
wuhaozhiyuan
等级:Blank
#13 得分:0 回复于: 2010-07-06 15:30:46
引用 12 楼 jixuan1989 的回复:
引用 10 楼 wuhaozhiyuan 的回复:
在response.sendRedirect()的URL中加入参数,如:

resp.sendRedirect(“http://localhost:8000/context/jsp/message.jsp?message=message”);

String map = (Str……

但是我要传ResultSet啊。。。这个只能传……
你可以根据传过来的参数,重新查询ResultSet,
至于传ResultSet,我这个方法做不到。
对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
hetengfeng
关注
hetengfeng
hetengfeng
等级:Blank
#14 得分:0 回复于: 2010-07-06 15:40:57
通过,地址栏传参数..
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
lacus87
关注
lacus87
lacus87
等级:Blank
#15 得分:0 回复于: 2010-07-06 15:49:06
引用 9 楼 jixuan1989 的回复:
页面不是静态的,下一个页面是要读取ResultSet的。
但是:
然后这个servlet用request设置参数include一个JSP页面展示
是什么意思。。。
就是这个servlet拿到上一个重定向servlet存在session中的数据后清空Session中的该数据,然后使用RequestDispatcher.forward()展现数据

这样可以让resultSet只在session中用一次就消除,但是如果刷新的话,
因为session中已经没有了,当前页面数据都会丢失
还有你conn关掉的话resultSet肯定会关掉…

对我有用[1] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#16 得分:0 回复于: 2010-07-06 15:52:57
引用 15 楼 lacus87 的回复:
就是这个servlet拿到上一个重定向servlet存在session中的数据后清空Session中的该数据,然后使用RequestDispatcher.forward()展现……
我晕 那我只能先把ResultSet内容保存成StringBuffer 了 否则数据库连接岂不是不能断?
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
jixuan1989
关注
jixuan1989
jixuan1989
等级:Blank
#17 得分:0 回复于: 2010-07-06 16:08:18
引用 15 楼 lacus87 的回复:
还有你conn关掉的话resultSet肯定会关掉…
试了一下 果然如此 幸亏你提及了 要不我还真得郁闷半天。。
对我有用[0] 丢个板砖[0] 引用 | 举报 | 管理
IBM_hoojo
关注
IBM_hoojo
hoojo
等级:Blank
3
#18 得分:0 回复于: 2010-07-06 17:48:48
CSS code
?
1
2
3
4
改变url只能用response.sendRedirect(“url?sName=aaa”)
这样可以传一些参数过去
你可以将查询ResultSet的条件带过去再查询一遍
也可以用session,保存后得到了然后删掉即可