两个月前接了一个项目,是一个网站。经过初步分析前台的"最新..."需要动态生成。我们毕竟是学JSP动态网站开发的,正好边学边做。我发现这里要链的的客户还真不少。那假如我无意中删除错了,把一条客户的信息删掉了,那该咋办?于是我想到了邮箱里的"垃圾箱"功能。再结合微软的Windows OS上的"回收站"功能,使我产生了一个用JSP实现"回收站"的功能的想法。
艰苦的尝试、请教、修改......... 。
两个月后的今天,项目做完了。其中5月份有三个星期因为课程设计耽误了,那三周没有做。其他除了上课时间我都在做这个项目。当然与这篇文章的主题功能"回收站"也做好了。下面我就说下完成这个项目的知识点:
1.物理删除与逻辑删除
说这个话题前先给大家看一段材料吧!~
在计算机中资料数据等都以文件形式存储,删除文件分为两种情况,一种叫"逻辑删除",另一种叫"物理删除".
逻辑删除顾名思义,文件没有被真正的删除,只不过是文件名的第一个字节被改成操作系统无法识别的字符,通常这种删除操作是可逆的,就是说用适当的工具或软件可以把删除的文件恢复出来。
物理删除是指文件存储所用到的磁存储区域被真正的擦除或清零,这样删除的文件是不可以恢复的。
这个说法好像是2004微软提出的。我最初是看到一些关于Visual Foxpro数据库中记录恢复的文章里收到的启发。再后来我找到了一篇非常有用的帖子。这也是实现这个功能的原理。帖子中有用的内容:
xuzuning(唠叨)回复于 2005-06-16 10:03:52 得分 10 //才给10分了!~
表中增加一个字段,如
del emun('Y','N') default 'N'
检索时
select * from tbl_name where del='N'
删除时(注意:不能再用delete了)
update tbl_name set del='Y' where 条件
恢复删除
update tbl_name set del='N' where 条件
永久删除
delete from tbl_name where del='Y'
update tbl_name set del='Y' where 条件 ,这条SQL语句中这个"条件"的书写也很重要,下面结合这个条件引入下个知识点。
2.被动态赋值的复选框及获取多个复选框时值的处理。
先说复选框的动态赋值问题。框架:在每条记录前加一个复选框,当勾选复选框按"提交"按钮提交表单时,被选中的复选框value属性值要提前或者在被选择的同时获取到。我差点就用了JS脚本。后来经过多次设想、尝试、修改发现这个问题并不难实现,只需要:str.append("
再说多个复选框的value值被同时获取时用到的知识点。关于这一点还是我MSN上一个我并不熟悉的网友给我说的。结果让我给用上了。在此多谢该网友提供的这个方法:
String result[] = request.getParameterValues("checkbox");
String s_id="";
if(result.length>0){
for(int k=0;k
s_id=s_id+result[k]+",";
}
s_id=s_id.substring(0,s_id.length()-1);//去掉s_id中的最后一个逗号
out.print("你选择的客户ID号是:"+s_id);
}
用一个数组来接收从上个页面传递过来的多个复选框的值。当然你这样写了,用于删除(逻辑删除)的SQL语句(Update.....)也得改了。
3.分页和在同一个页面同时有Update和Delete语句时的处理。
分页技术我就不说了,面得班门弄斧了。
同一个页面同时有Update和Delete语句时的处理这个知识点我也简单说下。用到的有JavaScript知识。
.....
...........
>........
在处理页面这样写:
String sql = " ";
int info = Integer.parseInt(request.getParameter("tdy218"));
if(info==0){
sql = "update cusinfo set state='Y' where cusid in("+s_id+")";
}
else if(info==1){
sql = "delete from cusinfo where cusid in("+s_id+") ";
}
下面的我不用说你也知道该如何操作了吧?
还有好多零碎的知识点我就不说了,改天再续。
小结:用的知识点并不怎么高级,只是我们平时学习时多多积累。把好多知识点聚集到一起或许能创造出一个新的东西出来了。
最后来看看我的这个回收站页面吧!~