mysql数据库中插入重复数据修改
这只是个留言板的一部分,但是在显示留言板的页上一刷新,就出现大量的重复字段,怎么修改呀。
登录界面代码如下:
<%@ page contentType="text/html;charset=gb2312"%>
<%@ page import="java.sql.*"%>
<HTML>
<HEAD>
<TITLE> 留言板 </TITLE>
</HEAD>
<BODY>
<TABLE width="90%" align="center" border=1 cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd">
<TR>
<TD align="center" bgcolor="#88a6dd">访客留言板</TD>
</TR>
<TR>
<TD><TABLE align="center" border=1 cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd">
<FORM method="post" ACTION="acc_message.jsp" name="form1">
<TR>
<TD>姓名:</TD>
<TD bgcolor="#88a6dd"><input type="text" name="name" size=25></TD>
</TR>
<TR>
<TD bgcolor="#88a6dd">E-mail:</TD>
<TD bgcolor="#88a6dd"><input type="text" name="mail" size=25></TD>
</TR>
<TR>
<TD>主题:</TD>
<TD bgcolor="#88a6dd"><input type="text" name="title" size=25></TD>
</TR>
<TR>
<TD valign="top" bgcolor="#88a6dd">留言:</TD>
<TD><textarea name="content" rows=7 cols=25></textarea></TD>
</TR>
<TR>
<TD colspan=3><TABLE align="center" width="100%" cellspacing="0" cellpadding="0" bordercolordark="#88a6dd" bordercolorlight="#88a6dd">
<TR>
<TD align="center" bgcolor="#88a6dd"><input type="submit" value="提交留言"></TD>
<TD align="center"><a href="view_message.jsp"><font size=2>查看留言</font></a></TD>
<TD align="center" bgcolor="#88a6dd"><input type="reset" value="重新填写"></TD>
</TR>
</TABLE></TD>
</TR>
</FORM>
</TABLE></TD>
</TR>
</TABLE>
</BODY>
</HTML>
下面的一个是插入数据代码:
<%@ page contentType="text/html;charset=GBK"%>
<%@ page import="java.sql.*"%>
<html>
<head>
<title>验证信息</title>
</head>
<body>
<%
request.setCharacterEncoding("GBK");
Connection con=null;
String url="jdbc:mysql://localhost:3306/bbs";
String name=request.getParameter("name");
name=new String(name.getBytes("ISO-8859-1"),"GBK");
String mail=request.getParameter("mail");
String title=request.getParameter("title");
title=new String(title.getBytes("ISO-8859-1"),"GBK");
String content=request.getParameter("content");
content=new String(content.getBytes("ISO-8859-1"),"GBK");
java.util.Date date=new java.util.Date();
String datetime=new Timestamp(date.getTime()).toString();
System.out.println(datetime);
{
String sql="insert into liuyan(name,mail,title,datetime,content) values('"+name+"','"+mail+"','"+title+"','"+datetime+"','"+content+"')";
try
{
Class.forName("com.mysql.jdbc.Driver"); //加载mysql驱动
con=DriverManager.getConnection(url,"root","admin"); //连接数据库
PreparedStatement stm=con.prepareStatement(sql);
stm.executeUpdate(sql);
}catch(SQLException e){
System.out.println("数据库操作出现问题!");
con.close();
}
catch(Exception e1){
System.out.println("数据库更新出现问题!");
}
System.out.println(sql);
}
System.out.println(name);
%>
<jsp:forward page="view_message.jsp"/>
</body>
</html>
代码是完全没有问题的,但是只要一刷新:
也就是一段留言被多次打印出来了。
求高手帮忙修改一下。
[解决办法]
有个改进方法
在提交页面加个隐藏域,类似一个戳,值可以是时间+随机数,这个戳也作为表的一个字段
增加的时候先去查有没有这个戳的记录,有就不添加,没有就添加