敬告信息 :response.setHeader("Pragma","no-cache");问题
-------------------------------------------敬告信息
警告: 网页已经过期 您申请的网页是用表单中提交的信息创建的。该网页已失效。由于有安全预警功能,Internet Explorer 不会自动再次提交您的信息。
要重新提交信息并查看该网页,请单击刷新按钮。
--------------------------------------------------现象1----------------------------------------------------------
[登陆]页面--------->[树型目录]IFREAM页面
若在[树型目录]的每个Link的页面里面都加入,如下清cache语句
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires",0);
response.setHeader("Pragma","no-cache");
则,用Link的真实地址(右键属性查看这个Link的真实地址)
在IE浏览器上访问这个Link,然后在点IE的Back按钮就会出现上面的警告信息!
--------------------------------------------------现象2----------------------------------------------------------
getServletContext().getRequestDispatcher("URL").forward(request,
response);
若[登陆]页面采用上面这种方式,迁移到[树型目录]IFREAM页面,则
用户登陆后在[树型目录]页面做一些操作后,点IE浏览器的Back按钮!一直Back
到[登陆]页面,然后再点前进,若画面加入清cache语句,则显示上面的警告信息!
这时候若Back到URL为控制迁移的Servlet上,点刷新则
[
因为从[登陆]页面迁移到[树型目录]页面,通过一个Servlet来控制迁移,该Servlet采用的是getRequestDispatcher方式,所以
现在点刷新就会把原来信息重新提交一遍。
]会自动重新登陆到[树型目录]叶面!这就是所谓的重复提交?
若采用下面这种方式迁移则不会出现这种情况!
response.sendRedirect("URL");
但是这个URL必须是存在的.Jsp,并且IE的浏览器,地址栏上面的路径,即是我Jsp的路径!
不像getRequestDispatcher这种方式,地址栏上面的路径,即我Servlet的路径!
若用response.sendRedirect("URL");这种方式,我有办法修改,IE地址栏上面先是的URL吗?