日期:2014-05-18  浏览次数:20744 次

无刷新更新显示结果问题
问题描述:
刚学,写了个jsp+javabean+servlet小例子。过程是:
通过servlet的方法query()获取了数据库记录集放在request对象中,然后转向(request.getRequestDispatcher)到show.jsp
通过show.jsp打开新增记录界面add.jsp
add.jsp将表单数据再提供给servlet的方法
insert(),执行数据库操作后,重定向(response.sendRedirect)到该servlet的query方法,再次获取记录集放在request对象中,并再次转向到show.jsp

问题是:增加数据库记录再次转向到show.jsp后,页面上没有显示新增加的数据,必须手动刷新后才能显示。

请问:如何避免手动刷新就自动更新呢?我试过了取消缓冲,没有效果。还有暂时不想用ajax。

恳请路过的朋友指点!先谢了


------解决方案--------------------
用重定向吧
------解决方案--------------------
如果是刚学的话建议你把request和response两种方式的区别弄清楚
你把response.sendRedirect也换成request.getRequestDispatcher试试
------解决方案--------------------
request.getRequestDispatcher()是请求转发,前后页面共享一个request ; 
response.sendRedirect()是重新定向,前后页面不是一个request。 


所以你应该用request.getRequestDispatcher() 否则你的数据放在request里,找不到。自然用之前的数据了。
------解决方案--------------------
建议你在query方法中调试下,看看获取的记录是不是最新的。
------解决方案--------------------
你还是用重定向吧,sendRedirect是发送一次请求,而重定向的话是相当于发送两次请求,这样的话你心提阿尼啊的记录就可以在show.jsp页面中显示了……
------解决方案--------------------
你用的什么插入方法?hiberante的?可能是hibernate的缓存问题
------解决方案--------------------
你添加的语句发来看看。执行添加后,你马上用sql在查询分析器执行 看表添加进去了没有。
------解决方案--------------------
先说明下你连接什么数据库?还有使用什么技术进行连接数据库?
------解决方案--------------------
你这样写看看
Java code
    request.setAttribute("userlist", userList);  
         request.getRequestDispatcher("xx.jsp").forward(request,response);

------解决方案--------------------
能不能贴出从数据库里读数据的代码?
------解决方案--------------------
你再添加一行数据后立刻看Access数据库是否有这条数据。如果有。就与后台代码无关。那就看你的跳转的问题了。
------解决方案--------------------
你添加一行数据。立刻看Access数据库里面是否有。然后再调用query()方法看是否获得最新的数据
------解决方案--------------------
增加数据库记录再次转向到show.jsp;
你不会在增加之后就直接到show.jsp了吧?应该重新进入query查询方法里面去.