页面刷新(50分)

J

jerjoan

Unregistered / Unconfirmed
GUEST, unregistred user!
我做了一个程序,实现数据库数据添加、修改、删除,showData.jsp显示用户表中的所有数据,其中添加链接,点击后进入addData.html页面,在addData.html页面添加好数据后,点击按钮将数据提交到add.jsp文件,此文件脚本如下:<html>
<head>
<title>Untitleddo
cument</title>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=gb2312">
<%@ page contentType="text/html;
charset=gb2312" language="java" import="java.sql.*"%>
</head>
<body>
<jsp:useBean id="choice" scope="page" class="dataBaseDeal.DealData" />
<%
String userName=request.getParameter("userName");
String passWord=request.getParameter("passWord");
String popedom=request.getParameter("popedom");
sql="insert into user (userName,passWord,popedom) values('"+userName +"', '"+passWord+"','"+popedom+"')";
int res=-1;
res=choice.updateData(sql);
if (res>0)
{
%>
<jsp:forward page="showData.jsp"/>
<%
}
%>
</body>
</html>
在我数据添加成功以后,会重新调入showData.jsp页面,可是显示的数据表中并没有我刚加入的纪录,刷新页面后新纪录会出现在列表中,如果再次刷新,列表中会看到两条新纪录,再按刷新,纪录还会被重复的保存到数据库中。请问这是怎么回事,50分敬上。
 
你查一查可能你插入数据库时没有插入(在数据库中没有你刚增加的数据
 
实际情况是按多少次刷新,数据库中增加多少条记录。
 
  问题出在“<jsp:forward page="showData.jsp"/>”这一句,因为它的作用是在add.jsp把新的资源包括进来,而你的意思是要浏览器重新请示新的url所以必须要它换成
<%response.sendRedirect("showData.jsp");%>这种重定向的方法,可以使浏览器请求URL跳转。从浏览器中的地址栏中可以看到新的URL地址^_^
  而前者没有发生请求URL跳转,就是地址栏中还是add.jsp的页面地址
 
>>在我数据添加成功以后,会重新调入showData.jsp页面,可是显示的数据表中并没有我刚加入的纪录
我帮你试过了,好像没出现这种情况,有问题再说吧,呵呵
 
thinkjsp说的没错
 
thinkjsp:
我按你的方法试过了,要手工刷新showData界面,才能看到新纪录。
 
那你可以检查一下你的数据库的指针的位置,从你的描述来看,已经不是<%response.sendRedirect("showData.jsp");%>的问题了,因为刷新之后有新记录的话,那么重新定向后也会有的,所在你要保证你的指针在第一条,然后再进行查询,这样就不会出现这种情况了,你可以试着,把所有的数据库连接关掉,然后再查询记录!
 
刷新问题最好最简单的解决办法是加个时间参数,确保每次访问的页面都不同(实质相同)如:response.sendRedirect(response.encodeRedirectUrl("showData.jsp?&amp;Time="+System.currentTimeMillis()));
 
谢谢诸位大虾,我接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
顶部