构建用户友好的web软件之删除数据
2007-03-13 12:03
274 查看
首先是一个列表界面,如下图所示
点删除链接,如果删除成功,则直接刷新本页面,如果删除失败,则如下图所示,弹出提示框
这个列表页面,也许是由很多查询条件查询出的结果,而且可能进行了分页,删除成功后,要仍然返回这个页面。方法有两个
1.在request保存查询参数,再查询一次,得到这个页面,
2.利用javascript刷新页面,
对于第一种方式,因为参数较多,编程很麻烦,而且影响性能,代码不能重用,每个列表页面都要写一次
对于第2种方式,可以利用弹出窗口,巧妙的实现这样的效果
,这里假设我处理删除的是DeleteAction,主键为id
一. 删除链接
<a href="#" onclick="window.open('DeleteAction.do?id=9527')"> 删除</a>
二.DeleteAction
execute()方法代码如下:
public ActionForward execute()
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
String message = null; //返回错误信息
Manager manager=new Manager();//删除数据的业务逻辑类
if(!manager.delete(id)){//如果删除失败
message="删除失败!";
}
if(message ==mull){
JSDeleteHelper.closeAndRefresh();
}else{
JSDeleteHelper.closeAndAlert(response, message);
}
}
三.JSDeleteHelper帮助类
public class JSDeleteHelper{
//关闭窗口,并弹出提示信息
public static void closeAndAlert(HttpServletResponse response, String alert) {
response.setContentType("text/html; charset=GBK");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.write("<script language='javascript'>");
out.write("window.alert('" + alert + "!');window.close();");
out.write("</script>");
}
//关闭窗口,并刷新父窗口
public static void closeAndRefresh(HttpServletResponse response, String alert) {
response.setContentType("text/html; charset=GBK");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.write("<script language='javascript'>");
out.write("window.opener.location.reload();window.close();");
out.write("</script>");
}
}
当然这样还有很多冗余代码,我们可以抽象一个DeleteBaseAction基类,把判断message的代码放到基类中,这样子类继承DeleteBaseAction,子类的代码就非常干净整洁了
DeleteBaseAction:类代码如下:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
String message = executeLogic(mapping,form,request,response); //调用execute方法,这个方法由子类实现
if(message ==mull){
JSDeleteHelper.closeAndRefresh();
}else{
JSDeleteHelper.closeAndAlert(response, message);
}
//抽象方法,子类实现这个方法,加入业务逻辑
public abstract String executeLogic(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response);
}
点删除链接,如果删除成功,则直接刷新本页面,如果删除失败,则如下图所示,弹出提示框
这个列表页面,也许是由很多查询条件查询出的结果,而且可能进行了分页,删除成功后,要仍然返回这个页面。方法有两个
1.在request保存查询参数,再查询一次,得到这个页面,
2.利用javascript刷新页面,
对于第一种方式,因为参数较多,编程很麻烦,而且影响性能,代码不能重用,每个列表页面都要写一次
对于第2种方式,可以利用弹出窗口,巧妙的实现这样的效果
,这里假设我处理删除的是DeleteAction,主键为id
一. 删除链接
<a href="#" onclick="window.open('DeleteAction.do?id=9527')"> 删除</a>
二.DeleteAction
execute()方法代码如下:
public ActionForward execute()
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response){
String message = null; //返回错误信息
Manager manager=new Manager();//删除数据的业务逻辑类
if(!manager.delete(id)){//如果删除失败
message="删除失败!";
}
if(message ==mull){
JSDeleteHelper.closeAndRefresh();
}else{
JSDeleteHelper.closeAndAlert(response, message);
}
}
三.JSDeleteHelper帮助类
public class JSDeleteHelper{
//关闭窗口,并弹出提示信息
public static void closeAndAlert(HttpServletResponse response, String alert) {
response.setContentType("text/html; charset=GBK");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.write("<script language='javascript'>");
out.write("window.alert('" + alert + "!');window.close();");
out.write("</script>");
}
//关闭窗口,并刷新父窗口
public static void closeAndRefresh(HttpServletResponse response, String alert) {
response.setContentType("text/html; charset=GBK");
PrintWriter out = null;
try {
out = response.getWriter();
} catch (IOException e) {
e.printStackTrace();
}
out.write("<script language='javascript'>");
out.write("window.opener.location.reload();window.close();");
out.write("</script>");
}
}
当然这样还有很多冗余代码,我们可以抽象一个DeleteBaseAction基类,把判断message的代码放到基类中,这样子类继承DeleteBaseAction,子类的代码就非常干净整洁了
DeleteBaseAction:类代码如下:
public ActionForward execute(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
String message = executeLogic(mapping,form,request,response); //调用execute方法,这个方法由子类实现
if(message ==mull){
JSDeleteHelper.closeAndRefresh();
}else{
JSDeleteHelper.closeAndAlert(response, message);
}
//抽象方法,子类实现这个方法,加入业务逻辑
public abstract String executeLogic(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response);
}
相关文章推荐
- JQuery操作SharePoint Web Services之删除和更新列表数据
- 使用Ajax和jQuery实现用户友好的web页面
- Android 利用SharedPreferences保存与删除 用户登录数据
- 笔记 Java web实现用户登录、数据库数据查询、数据删除等功能
- 如何用数据恢复软件找回删除的文件
- Mercury Web Tours 中删除用户的方法
- 构建更加安全的 Web 应用程序-一个新的保护框架可帮助您防止操作和数据篡改
- 如何在Web页面退出前提示用户保存数据?
- Spark项目之电商用户行为分析大数据平台之(十二)Spark上下文构建及模拟数据生成
- 使用DataGridView数据窗口控件,构建用户快速输入体验
- 删除用户及下面的数据
- Android 软件开发之数据的 新建 储存 读取 删除 详解(十四)
- Oracle中删除某个用户下的所有数据呢
- SQL Server 数据库维护脚本合集[007]-删除数据库所有用户表数据
- Android 软件开发之数据的 新建 储存 读取 删除 详解
- Intellij IDEA 构建Spring Web项目 — 用户登录功能
- 深入浅出的webpack4构建工具--webpack4+vue+vuex+mock模拟后台数据(十九)
- 允许用户删除 DataList Web 服务器控件中的项
- oracel 批量删除当前用户下所有的表的数据及所有的表
- oracle数据中删除数据时提示“记录被另一个用户锁住”