当用servlet与jsp在数据库中插入一条记录时,此时是用tomcat服务器的,当页面显示完成插入时,如果此时按下F5或者选择刷新,系统就会提示 数据库设计是,应避免重复插入(用主键……)。如重复插入,导到ErrorPage就可! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 同意buick555(王飞) ,用数据库表主键约束。 好像是在提交表单后加一个随机数。论坛里好像很多类似贴子。你搜索一下jsp栏吧。 怎样加一个随机数?buick555(王飞) 所想的想法在我这一个表里面没法控制的,其他表可以,但就是因为这个表是要求任意的加上数个记录,在最后才提交的,所以这个表的ID就设为自动在插入前加1了!!! 你可以在插入以后重新LOAD一次你的页面,也就是清空你要提交的内容; 应该还是你的jsp/servlet的问题,关键代码贴出来,看看怎么帮你解决。有一个相同的帖子,一按刷新就重新提交,你可以搜索看一下。 采用同步令牌来避免重复提交,可以参考j2ee核心模式这本书 代码很多,不知怎样帖,我现在是用事务来提交的,即在开始时建立一个新的连接,设为connection.setAutoCommit(false);,之后每次进行插入时都是用原来的这个连接,直到提交的时候,把这个事务也 connection.commit();就这样才真正提交到数据库(注意:插入数据库的确定按钮与提交按钮是两个按钮来的)!所以:outer2000(天外流星)的提法,如果执行的话,那不把我整个事务都rollback掉了!--------------现在的插入就好像是一对多的关系,当一个主表的一个记录插入时,把这多个记录(也就是上面所说的事务)插入另一个表中,然后这多个记录的ID设为与主表的记录ID相等,最后提交事务,情况就是这样! 现在时间很紧,没那么多时间来和看“j2ee核心模式”! 我觉得是你数据库设计有问题。如果不修改数据库设计,那你应该插入之前先检查一下该记录是否存在,即检查你不允许重复的某个字段,如果没有,在执行数据库操作,否则提示已经存在,或干脆导航道别的页面。如下:String sqlStr = "select columnName from tableName";ResultSet rs = st.executeQuery(sqlStr);if(rs.next()){ //提示或导航}else{ //insert 操作} To: Tmsheng(小唐蔡) 数据库设计并没问题,因为这是一个附表.不过你那个想法也值得考虑一下。To: sery(莫桑比克的乌木) 把入库页面处理完成再跳转到提交页面,那有没想过我一直在入库页面操作的时候,按F5的情况,现在就是这种情况啊! 在程序中控制,我看过一个有session变量控制的,插入记录前如果session变量值为undo,则可插入新记录,成功后可将此变量设为do,此时无论他按多少次F5都不会有插入操作。当用户返回提交面页时,session变量设为undo,可填写新的记录了。这样的作法相信能收到一定的效果。 不知为什么,我在程序中用了一个变量来控制,当单击按钮的时候,我在按钮的onclick事件中写了一个false的值,然后去到servlet里面,判断当变量为false时,我就让程序执行操作,完成后将变量设为true了...但当我再按下F5的时候,又插入了一条,为什么那个变量没用的??? 现在情况是页面也是同一页,servlet也是同一个,操作完成与否都是用同一个servlet提交回到同一个jsp!(此时如果不用变量就会发生循环的,因为是提交回同一个servlet!)但用上面的变量可以控制servlet不发生循环即只执行了一次,但对F5好像一点用都没有! weblogic的部署问题 谁用过规则引擎DROOLS,进来讲讲 求助:java web打印问题 如果你是热心人,看了会后悔! +++++++++++++关于<jsp:include...的问题,急,在线等,江湖救急!!!!!!!!!!! 高手请进:java日期格式问题。 关于jive安装的一个问题 ext菜鸟求助 这是一个加密日记本的程序 谁帮我看看哪里错了 谢谢!!!! 怎么才能上传不同格式的图片,各位大侠帮个忙...谢谢 servlet线程安全问题 gws(郭文)老大请看
论坛里好像很多类似贴子。你搜索一下jsp栏吧。
outer2000(天外流星)的提法,如果执行的话,那不把我整个事务都rollback掉了!--------------
现在的插入就好像是一对多的关系,当一个主表的一个记录插入时,把这多个记录(也就是上面所说的事务)插入另一个表中,然后这多个记录的ID设为与主表的记录ID相等,最后提交事务,情况就是这样!
如果不修改数据库设计,那你应该插入之前先检查一下该记录是否存在,即检查你不允许重复的某个字段,如果没有,在执行数据库操作,否则提示已经存在,或干脆导航道别的页面。如下:
String sqlStr = "select columnName from tableName";
ResultSet rs = st.executeQuery(sqlStr);
if(rs.next())
{
//提示或导航
}
else
{
//insert 操作
}
这样的作法相信能收到一定的效果。