sendRedirect与getRequestDispatcher的区别

03-04-09 shiqiang705

我最近做了一个程序,在servlet中查询数据并将查询结果集放入一个session中,在jsp中取用这个查询结果集的数据,流程是:jsp--servlet--jsp,但现在的问题是,在从servlet处理完成后返回jsp时,如果用getRequestDispatcher(myurl).forward(request, response),能取回结果集,用sendRedirect,则只能取得上次的结果集或为null,请问这是为什么.

因为getRequestDispatcher只能用相对路径,所以我想用sendRedirect实现有没有好的办法

请帮帮忙谢谢

zz
2003-04-09 12:15

sendRedirect是通知IE再次提交一个http请求,

dispatcher是直接转到目的地址,最直接得表现

应该是dispatcher后的IE地址栏地址是不变的

shcyb2000
2003-04-09 13:34

对啊,一个是直接转的,保留所有的请求参数

而另外一个是通知IE,然后IE再重新连接返回的地址

shiqiang705
2003-04-09 14:34

虽然是通知重新加载,但这是在一个会话过程中的行为理应可以从session中读取.如果用sendRedirect实在不行,那用getRequestDispatcher怎样实现这样的跳转:从/search/aq/bdsearch.jsp到/maintain/aq/bdmaintain.jsp

shcyb2000
2003-04-09 15:06

在JSP中用下列代码实现跳转

// 在此输入java代码
RequestDispatcher rd = request.getRequestDispatcher("\error.jsp");
rd.forward(request, response);
<p>