日期:2014-05-17  浏览次数:20778 次

一个关于request.getRequestDispatcher 转发的问题
我遇到问题的过程是这样的:
1、我有一个jsp的展示页面A,展示的是用一个初始化的servlet  a从xml文件读取的数据;
2、我在这个jsp页面A上有一个添加数据的操作:
    具体是点击页面A上链接弹出一个jquery插件的弹出窗口,窗口里是另外一个jsp页面B,页面B上有输入框,及提交按钮,点击提交按钮之后,弹出窗口会关闭回到页面A(这个过程是没有页面跳转,只是B在A只上,B被关掉而已),同时页面B上的数据会转发到servlet  b中进行处理;
3、servlet  b处理完后,再将新的展示数据传递给jsp 页面A,这里用的是:
         request.getRequestDispatcher("A.jsp").forward(request,response); 
这个方法。 

这时,问题来了:看似从servlet  b中转发数据到了页面A,但实际是,页面A根本完全没有刷新,它的数据还是初始化的数据,新数据并没有加进去!

我的理解是:服务器给浏览器转发时,如果浏览器中的页面恰好是要转发的页面,是不是服务器就不刷新这个页面了??

完全不懂,求指点。。。。。

servlet jsp

------解决方案--------------------
楼主的想法是错的,不管你的页面是不是和服务器要转发的页面一样,页面都会刷新的。楼主的问题出在这里,因为你的提交按钮是在b.jsp这个页面上,所以服务器转发后返回的页面会返回到你提交的这个页面,也就是说楼主转发的a.jsp这个页面被转发到了b.jsp这个来了,就是b.jsp这个才会刷新,但是楼主的b.jsp这个页面已经关闭了,所以才会出现楼主所说的现象。