e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 程序开发 >> JSP教程 >> Web开发中防止浏览器的刷新键引起系统操作重复提交 >> 教程正文
 
教程搜索
 
 
相关教程
  • JSP分页技术实现
  • 使用XML封装数据库操作语句的实现(完
  • 结合”XML封装数据库操作语句的实现”
  • 如何使用XML实现多渠道接入网站的构架
  • 深入浅出taglib
  • 在JSP中编写你的第一个Tag
  • 用Java实现Web服务器
  • 如何利用xml,javascript绕开apple
  • 缓存JSP显示的内容
  • 关于JAVA的分页查询操作技术
  • 漫步j2ee之jsp技术(1)
  • 漫步j2ee之jsp技术(2)
  • Portlet应用开发(Portlet Specs v1.0)
  • 如何用jsp输出存在于oracle数据库Blob
  • Servlet设计
  • 用servlet显示图片
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
Web开发中防止浏览器的刷新键引起系统操作重复提交
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

Web系统的用户界面往往是通过html脚本在浏览器中显示出来,其中浏览器的刷新功能

将重新提交当前页面的URL请求。这就会出现如下情况:从一个新增编辑页面存盘后返

回到一个记录列表页面, 在这个列表页面使用刷新键的时候,用户的意图应该是想刷

新当前的记录列表,但是这时候提交的会是新增记录存盘的请求, 这样就可能出现向

服务器重复提交导致错误。

如何能够解决这个问题,首先要认识到提交存盘操作后的列表页面的URL请求与直接提

交显示列表页面的URL请求对于客户端显示的刷新操作带来的不同效果,我们要是能将

存盘操作后在客户端显示出的记录列表页面在客户端的页面属性 和直接请求列表的的

页面属性一样的话,就能够让刷新操作只提交列表显示的请求。我们可以利用 java

servlet所提供的redirect功能来将存盘功能和显示记录列表分开,在完成了存盘操作

后给 response设定显示记录列表的请求重定向返回到客户端浏览器,这样浏览器中显

示的列表页面的请求属性是直接请求记录列表显示的URL,直接刷新页面的话则提交的

也是记录列表页面显示的请求。

在目前流行的struts结构中,实现重定向很方便,只需要在配置文件struts-config.xml

里面中的<forward脚本中加上redirect属性值为“true”,例如以下一个配置:

<action path = "/saveRecord"

type = "xxx.SaveRecordAction"

name = "recordForm">

<forward name="success" path="/recordList.do" redirect="true"/>

<forward name="fail" path="/recordEdit.do" redirect="true"/>

</action>

设定记录存盘操作(saveRecord)请求成功完成后,重定向到记录列表显示(recordList)

请求去,若操作失败则重定向到编辑界面(recordEdit)继续修改。

需要注意的是重定向后的请求不会自动获得当前请求的request数据,当然包括各种form

提交的数据,所以在实际运用中最烦人的可能是将重定向请求所需的各类参数设定到重

定向的URL字串中。

对上面的配置例子,假设我们的/recordList.do请求需要一个参数是record_id=xxx,

我们可以在xxx.SaveRecordAction里用以下代码来设定几个参数:

public ActionForward execute(ActionMapping mapping,

ActionForm form,

HttpServletRequest request,

HttpServletResponse response)

throws Exception

{

...//略去处理存盘代码

ActionForward actForward = actionMapping.findForward("success");

String path = actForward.getPath();

path += "record_id=xxx";

return new ActionForward(actForward.getName(),path,true);

//返回一个重定向ActionForword对象

}

具体系统应用中可以做一些优化处理来获得更好的代码。

  • 上一篇教程: 谈一下关于XHTML网页的制作
  • 下一篇教程: 利用Ant和XDoclet自动产生映射文件例子
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.