java在客户端删除一条数据原页面刷新之后,数据仍然存在的问题

chengxurensheng111 2018-09-06 03:00:36
本人在做java web项目的时候遇到这样一个问题,在jsp页面通过勾选复选按钮的方式删除一行数据原页面刷新之后,被删除的那条数据在数据库中倒是被删除了,但是页面上的那条删除的数据仍然存在,数据库中的数据都已经删除了,同时客户端也看见页面刷新了,重新遍历之后在原页面应该看见数据被删掉了才对,不清楚是什么原因,还请各位了解的朋友给些意见,帮帮忙,互相交流,互相学习,谢谢!
...全文
2816 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
btx8088wl 2018-09-29
  • 打赏
  • 举报
回复
你的程序哪里出问题了, 你的结果集 是取的 session.getAttribute("pageModel"); 那你删除之后,DAO完成了执行操作,在你的controller后台的哪个地方,你没有将新的结果集 写进 "pageModel" 这样导致,你从当前页面session里取到的结果集还是编辑删除之前的,查查后台代码吧,或者你删除完之后,重新roll下数据,重新set 一下这个页面关键字对应的结果集 ---》 session.setAttribute("pageModel",list)
chengxurensheng111 2018-09-29
  • 打赏
  • 举报
回复
问题已经得到解决了,主要原因就是删除之后查询的还是原来的list结果集,所以删除的数据仍然存在页面中,根据大家的建议,在删除数据之后重新到数据库中查询了一遍,得到新的list结果集,然后原页面再刷新的时候已经删除的数据就不存在了,希望以后还能继续和朋友们切磋技术,共同学习共同进步!非常感谢大家1
chengxurensheng111 2018-09-28
  • 打赏
  • 举报
回复
注明:javascript中action定位到的页面fenye.jsp就是当前jsp页面

<%
ApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(
request.getSession().getServletContext());
IStudentService service = (IStudentService)ac.getBean("studentService");
String command = request.getParameter("command");

if("del".equals(command)){
String[] names = request.getParameterValues("selectFlag");
for(int i=0;i<names.length;i++){
service.removeStudent(names[i]);
}
// response.sendRedirect(request.getContextPath()+"/fenye.jsp");
}
PageModel pageModel = (PageModel)session.getAttribute("pageModel");
List<Student> list = pageModel.getList();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>显示学生信息</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
<script type="text/javascript">

function deleteUser() {
var selectFlags=document.getElementsByName("selectFlag");
var flag=false;
for(var i=0;i<selectFlags.length;i++){
if(selectFlags[i].checked){
flag=true;
break;
}
}

if(!flag){
alert("请选择需要删除的用户!");
event.preventDefault();
return;
}
if(window.confirm("确认删除吗?")){;
with(document.getElementById("fenyeform")) {
action="fenye.jsp?command=del";
method="post";
submit();

}
}
}
</script>



</head>
<body>
<form name="fenyeform" id="fenyeform">
<!-- 使用隐含域判断客户端的操作 -->
<input type="hidden" name="command" value="del">
<table border="1" align="center">
<h2 align="center">学生信息列表</h2>
<hr>
<tr>
<!--定义表头单元格 -->
<th><input type="checkbox" name="selectAll" onclick="checkAll(this)"></th>
<ins></ins>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>年龄</th>
<th>出生日期</th>
<th>家庭地址</th>
<th>班级名称</th>
<th>英语成绩</th>
<th>数学成绩</th>

</tr>

<!-- 循环遍历集合中的数据 -->
<%-- <c:forEach items="${studentList}" var="stu" > --%>
<%

for(Iterator iter = list.iterator();iter.hasNext();){
Student student = (Student)iter.next();
%>

<tr>
<td>
<input type="checkbox" name="selectFlag" value="<%=student.getName()%>">

</td>
<td><%=student.getId()%></td>
<td><%=student.getName()%></td>
<td><%=student.getSax()%></td>
<td><%=student.getAge()%></td>
<td><%=new SimpleDateFormat("yyyy-MM-dd").format(student.getBirthday())%></td>
<td><%=student.getAddress()%></td>
<td><%=student.getClassName()%></td>
<td><%=student.getEnglishScore()%></td>
<td><%=student.getMathScore()%></td>
<td>
<input type="button" name="update" id="update" value="修改" onclick="modifyUser()">
<input type="button" name="delete" id="delete" value="删除" onclick="deleteUser()">
</td>
</tr>

<%
}
%>
<%-- </c:forEach> --%>

</table>
<br><br>
<hr>
<table width="85%" align="center">
<tr>
<td>
<div align="left">
共 <b>${pageModel.pageCount}</b> 页</font>     
当前第 <span>${pageModel.pageIndex}</span> 页
</div>
<div align="right">
<a href="test/fenye.do?pageIndex=1" onclick="topPage()">首页</a>
<a href="test/fenye.do?pageIndex=${pageModel.pageIndex>1?pageModel.pageIndex-1:1}" onclick="previousPage()">上一页</a>
<a href="test/fenye.do?pageIndex=${pageModel.pageIndex<pageModel.pageCount?pageModel.pageIndex+1:pageModel.pageCount}" onclick="nextPage()">下一页</a>
<a href="test/fenye.do?pageIndex=${pageModel.pageCount}" onclick="bottomPage()">尾页</a>
</div>
</td>
</tr>
</table>
<br>
<div align="right">
<a href="index.jsp" ><input type="button" value="返回"></a>
</div>
</form>
</body>
</html>
chengxurensheng111 2018-09-28
  • 打赏
  • 举报
回复
嗯对,如果是缓存的问题,删除数据之后怎样清理缓存呢?方便的话把代码告诉我一下,谢谢!
chengxurensheng111 2018-09-28
  • 打赏
  • 举报
回复
之前感谢大家的帮助,前段时间回家办点事情,现在回来了,一会儿我把代码贴上,还希望大家有时间还能帮忙解决一下,也希望以后一直能跟大家在这方面进行交流,互相学习,共同进步。
夜雨恋星辰 2018-09-28
  • 打赏
  • 举报
回复
你代码全部写在jsp中的吗? 很大的可能是缓存问题
DaiYuMeng 2018-09-15
  • 打赏
  • 举报
回复
我也觉得应该是缓存的问题。
只是你可否设置一个时间,让它精确到毫秒,然后写个方法通过时间来判断再释放缓存从而删除呢?
alunSemiconductor 2018-09-10
  • 打赏
  • 举报
回复
输出一下service层调用返回的结果试试看
  • 打赏
  • 举报
回复
删除以后重定向到你的页面。
渣渣辉 2018-09-10
  • 打赏
  • 举报
回复
应该是缓存的问题吧,查的时候数据存入缓存,删的时候删除数据库中的数据,但缓存还在,二次查询的时候直接走缓存不走数据库。之前我们是在删的时候加了一个清除缓存的设置。
walkonthesky 2018-09-10
  • 打赏
  • 举报
回复
查询结构使用了缓存,delete操作的时候忘记更新缓存了?
hlx198654 2018-09-07
  • 打赏
  • 举报
回复
这种问题一般都说缓存、cookie、session造成的,好好找找就知道了
普通的日常 2018-09-07
  • 打赏
  • 举报
回复
查询走的是缓存不是数据库吧
maradona1984 2018-09-07
  • 打赏
  • 举报
回复
引用 2 楼 chengxurensheng111 的回复:
感谢朋友给的建议!我做的这个项目使用的是SSM框架,删除操作走的是JS,然后通过location跳到jsp页面的,再在jsp页面通过spring容器拿到的service调的业务逻辑,没走后台的控制器,JDBC连数据库操作被封装在底层了看不到,这个问题是像你说的connection 连接通道没有关闭导致数据缓存在通道中吗?那这样的话如何关闭呢?

断点调试吧,如果进不了断点,那就是页面被缓存,数据库连接不存在缓存一说,不然连接池是干啥的?
当然我觉得你代码写的有问题的概率也比较大
chengxurensheng111 2018-09-07
  • 打赏
  • 举报
回复
感谢大家的帮助,浏览器缓存清了还是不行,这几天回家办点事,家里没有网络,等过几天回去的,我把代码贴上去吧,希望大家能再帮我分析一下,感谢大家!
·Diablo 2018-09-07
  • 打赏
  • 举报
回复
主要看看你是不是重新发了一个请求后台接口的请求,在浏览器上按F12 选NetWork 查看访问请求 这样可以看到你刷新了页面是否重新请求了后台的接口,还有就是看看请求的返回值是什么,根据这样来分析自己的问题在哪。
verejava 2018-09-07
  • 打赏
  • 举报
回复
田小瘦 2018-09-07
  • 打赏
  • 举报
回复
贴代码看看,最直接
Dan淡淡的心 2018-09-07
  • 打赏
  • 举报
回复
引用 2 楼 chengxurensheng111 的回复:
感谢朋友给的建议!我做的这个项目使用的是SSM框架,删除操作走的是JS,然后通过location跳到jsp页面的,再在jsp页面通过spring容器拿到的service调的业务逻辑,没走后台的控制器,JDBC连数据库操作被封装在底层了看不到,这个问题是像你说的connection 连接通道没有关闭导致数据缓存在通道中吗?那这样的话如何关闭呢?
Mybatis的话 清空 SQLsession的缓存就好 最好每次执行SQL之后就清理一次 或者直接关闭 SQLsession.close();
  • 打赏
  • 举报
回复
可能是浏览器自动缓存页面的原因,清空一下浏览器缓存试一下。
加载更多回复(4)

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧