java刷新页面重复提交,请教怎样处理退后刷新页面的重复提交有关问题?多谢...

该博客探讨了在JavaWeb开发中如何处理浏览器后退刷新导致的重复提交问题。作者通过示例代码展示了在acceptReply.jsp中尝试避免重复插入数据库的操作,但遇到了效率低下的问题。为了解决这个问题,作者提出了查看其他程序的Post表单提交检查方法,并寻求社区的解决方案,讨论了可能的防止重复提交的最佳实践。
摘要由CSDN通过智能技术生成

当前位置:我的异常网» Java Web开发 » 请教怎样处理退后刷新页面的重复提交有关问题?多谢

请教怎样处理退后刷新页面的重复提交有关问题?多谢

www.myexceptions.net  网友分享于:2013-01-19  浏览:13次

请问怎样处理退后刷新页面的重复提交问题?谢谢

我写了一个的简单的BBS小例子:

遇到的问题,简单一点来说:reply.jsp和acceptReply.jsp

reply.jsp是一个简单的表单页面,用来输入内容;acceptReply.jsp接受并存入数据库!

源代码(主要):

reply.jsp内容很简单,就是一个提交!

acceptReply.jsp源码:

//设置页面不缓存

/*

response.setHeader("Pragma", "No-cache");

response.setHeader("Cache-Control", "no-cache");

response.setDateHeader("EXpires", 0);

*/

request.setCharacterEncoding("gbk");

//从相应的reply页面获得的参数

String title = request.getParameter("title");

String content = request.getParameter("cont");

if (title == null || title.equals("") || content.equals("")

|| content == null) {

out.print("你的输入有误,请重新发帖!");

return;

}

String strPid = request.getParameter("pid");

String strRootid = request.getParameter("rootid");

int pid;

int rootid;

try {

pid = Integer.parseInt(strPid);

rootid = Integer.parseInt(strRootid);

} catch (NumberFormatException e) {

e.printStackTrace();

out.print("你的输入有误,请重新发帖!");

return;

}

//连接数据库,并做相应的操作(封装在一个bean里,但实现的不怎么好,有待改进)

Connection con = DB.getConnection();

con.setAutoCommit(false);

String sql = "insert into article value (null, ?, ?, ?, ?, now(), ?)";

PreparedStatement pst = DB.getPreSt(con, sql);

pst.setInt(1, pid);

pst.setInt(2, rootid);

pst.setString(3, title);

pst.setString(4, content);

pst.setInt(5, 0);

pst.executeUpdate();

DB.close(pst);

Statement st = DB.createStatement(con);

String changeSql = "Update article set isleaf = 1 where id = "

+ pid;

st.executeUpdate(changeSql);

con.commit();

con.setAutoCommit(true);

DB.close(st);

DB.close(con);

//以为是request对象的原因,但去掉也不行!

//request.removeAttribute("title");

//request.removeAttribute("cont");

%>

查看新发表帖子,三秒钟后会自动跳转

若没有跳转,请点击链接!

因为这有个三秒的自动跳转,但是我再次退回到acceptReply.jsp ,因为有三秒的延迟,我手动再次刷新页面,它就会再次提交和上一次同样的内容,并存入到数据库!

我是用了数据库的查看限制来做的,但觉得很不合理,效率也太低!我想问一下,大家是怎么做的?谢谢高手了!期盼中!

------解决方案--------------------

参考这个

Java进行程序的Post表单提交检查,防止非法和重复提交的分析

文章评论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值