转自:https://blog.csdn.net/eson_15/article/details/51360804

在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等。由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可。

1. 查询商品功能的实现

查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:"<input id='ss' name='serach' />",我们通过把普通的文本框转化为查询搜索文本框来实现,下面我们在query.jsp中添加相应部分的代码:

  1. 1 $('#ss').searchbox({
  2. 2 //触发查询事件
  3. 3 searcher:function(value,name){ //value表示输入的值
  4. 4 //添加触发代码
  5. 5
  6. 6 $('#dg').datagrid('load',{//重新load,参数name指定为用户输入value
  7. 7 name: value
  8. 8 });
  9. 9
  10. 10 },
  11. 11 prompt:'请输入搜索关键字'
  12. 12 });

测试结果如下:

查询很简单,跟上一节load所有商品一样,只不过查询的时候参数设为用户输入的值,加载所有的时候参数设为空即可。

2. 删除商品功能的实现

接下来做删除商品功能,首先我们把query.jsp中相应部分的代码补全:

  1. 1 {
  2. 2 iconCls: 'icon-remove',
  3. 3 text:'删除商品',
  4. 4 handler: function(){
  5. 5 //添加触发代码
  6. 6
  7. 7 var rows = $("#dg").datagrid("getSelections");//判断是否有选中行记录,使用getSelections获取选中的所有行
  8. 8 //返回被选中的行,如果没有任何行被选中,则返回空数组
  9. 9 if(rows.length == 0) {
  10. 10 //弹出提示信息
  11. 11 $.messager.show({ //语法类似于java中的静态方法,直接对象调用
  12. 12 title:'错误提示',
  13. 13 msg:'至少要选择一条记录',
  14. 14 timeout:2000,
  15. 15 showType:'slide',
  16. 16 });
  17. 17 } else {
  18. 18 //提示是否确认删除,如果确认则执行删除的逻辑
  19. 19 $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){
  20. 20 if (r){
  21. 21 //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4
  22. 22 var ids = "";
  23. 23 for(var i = 0; i < rows.length; i ++) {
  24. 24 ids += rows[i].id + ",";
  25. 25 }
  26. 26 ids = ids.substr(0, ids.lastIndexOf(","));
  27. 27 //2. 发送ajax请求
  28. 28 $.post("product_deleteByIds.action",{ids:ids},function(result){
  29. 29 if(result == "true") {
  30. 30 //将刚刚选中的记录删除,要不然会影响后面更新的操作
  31. 31 $("#dg").datagrid("uncheckAll");
  32. 32 //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页
  33. 33 $("#dg").datagrid("reload");//不带参数默认为上面的queryParams
  34. 34 } else {
  35. 35 $.messager.show({
  36. 36 title:'删除异常',
  37. 37 msg:'删除失败,请检查操作',
  38. 38 timeout:2000,
  39. 39 showType:'slide',
  40. 40 });
  41. 41 }
  42. 42 },"text");
  43. 43 }
  44. 44 });
  45. 45 }
  46. 46 }
  47. 47 }

从上面代码中可以看出,删除操作需要先选中至少一条记录,选中后,当确认删除时(即r为真),首先获取用户都勾选了哪些记录,将这些记录的id号拼接起来,然后想后台发送ajax请求,请求productAction中的deleteByIds方法,将拼接好的id作为参数带过去,如果删除成功,则返回一个字符串"true"到前台,然后前台将刚刚勾选记录清掉,以免影响后面更新操作,因为更新也要勾选记录,之后再刷新当前页,reload数据库所有商品信息。

流程很清楚明了,下面我们写后台程序,先从service层开始:

  1. 1 public interface ProductService extends BaseService<Product> {
  2. 2
  3. 3 //查询商品信息,级联类别
  4. 4 public List<Product> queryJoinCategory(String type, int page, int size); //使用商品的名称查询
  5. 5 //根据关键字查询总记录数
  6. 6 public Long getCount(String type);
  7. 7 //根据ids删除多条记录
  8. 8 public void deleteByIds(String ids);
  9. 9 }
  10. 10
  11. 11 @SuppressWarnings("unchecked")
  12. 12 @Service("productService")
  13. 13 public class ProductServiceImpl extends BaseServiceImpl<Product> implements ProductService {
  14. 14 //省略其他代码……
  15. 15
  16. 16     @Override
  17. 17     public void deleteByIds(String ids) {
  18. 18         String hql = "delete from Product p where p.id in (" + ids + ")";
  19. 19         getSession().createQuery(hql).executeUpdate();
  20. 20     }
  21. 21
  22. 22 }

接下来完成productAction中的deleteByIds方法:

  1. 1 @Controller("productAction")
  2. 2 @Scope("prototype")
  3. 3 public class ProductAction extends BaseAction<Product> {
  4. 4
  5. 5 //省略其他代码……
  6. 6
  7. 7 public String deleteByIds() {
  8. 8 System.out.println(ids);
  9. 9 productService.deleteByIds(ids);
  10. 10 //如果删除成功就会往下执行,我们将"true"以流的形式传给前台
  11. 11 inputStream = new ByteArrayInputStream("true".getBytes());
  12. 12 return "stream";
  13. 13 }
  14. 14 }

和之前删除商品类的思路相同,下面在struts.xml中配置:

  1. 1 <action name="product_*" class="productAction" method="{1}">
  2. 2 <!-- 省略其他配置 -->
  3. 3 <result name="stream" type="stream">
  4. 4 <param name="inputName">inputStream</param>
  5. 5 </result>
  6. 6 </action>

这样字符串"true"就通过流传到前台了,接收到说明删除成功。看一下效果:

测试成功,至此,商品的搜索和删除功能做完了。

【SSH网上商城项目实战11】查询和删除商品功能的实现的更多相关文章

  1. 【SSH网上商城项目实战23】完成在线支付功能

     转自: https://blog.csdn.net/eson_15/article/details/51464415 上一节我们做好了支付页面的显示,从上一节支付页面显示的jsp代码中可以看出,当用 ...

  2. 【SSH网上商城项目实战30】项目总结

      转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...

  3. 【SSH网上商城项目实战30】项目总结(附源码下载地址)

    项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...

  4. 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示

    转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...

  5. 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布

     转自:https://blog.csdn.net/wwww_com/article/details/54405355 前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响 ...

  6. 【SSH网上商城项目实战21】从Demo中看易宝支付的流程

         转自: https://blog.csdn.net/eson_15/article/details/51447492 这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后, ...

  7. 【SSH网上商城项目实战09】添加和更新商品类别功能的实现

    转自:https://blog.csdn.net/eson_15/article/details/51347734 上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1.  ...

  8. 【SSH网上商城项目实战05】完成数据库的级联查询和分页

    转自:https://blog.csdn.net/eson_15/article/details/51320212 上一节我们完成了EasyUI菜单的实现.这一节我们主要来写一下CategorySer ...

  9. 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2

    转自:https://blog.csdn.net/eson_15/article/details/51277324 今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总 ...

随机推荐

  1. Swift 函数提前返回

    简评:函数提前返回主要的好处是:将每个错误处理进行分离,审查代码时不需要考虑多种复杂异常,我们可以吧注意力集中在也业务逻辑中,调试代码时可以直接在异常中打断点. 提前返回 首先来看一下需要改进的代码示 ...

  2. iOS学习笔记(5)——显示简单的TableView

    1. 创建工程 创建一个新的Xcode工程命名为SimpleTableTest. 删除main.storyboard文件和info.plist中有关storyboard的相关属性. 按command+ ...

  3. 回归到jquery

    最近在做一个公司的老产品的新功能,使用原来的技术框架,jquery和一堆插件,使用jquery的话,灵活性是有了,但是对于一个工作了3年多的我来说,很low,没什么成就感,技术本身比较简单,但是业务的 ...

  4. XMPPFramework核心类介绍

    XMPPFramework结构 在进入下一步之前,先给大家讲讲XMPPFramework的目录结构,以便新手们更容易读懂文章.我们来看看下图: 虽然这里有很多个目录,但是我们在开发中基本只关心Core ...

  5. Java操作数据库实现"增删改查"

    本文主要讲解JDBC操作数据库    主要实现对MySql数据库的"增删改查" 综合概述: JDBC的常用类和接口 一   DriverManager类 DriverManage类 ...

  6. ltp-ddt eth过程中遇到的问题

    eth_iperf_tcp ETH_S_PERF_IPERF_TCP_INTPACING_8K_1448B source 'common.sh'; iface=`get_eth_iface_name. ...

  7. 【NOI2018】

    总之国赛已经过了1个月了. 感谢北大当初给我的一本约救我狗命,不然国赛就要没学上了. 铜牌倒数十多名,我觉得我也是混到了一种境界. 虽然对于集训队已经失去梦想,但是,Day1全场堪称最低的21分,也是 ...

  8. 最新版IntelliJ IDEA2019.1破解教程(2019.04.08更新)

    [原文链接]:https://www.tecchen.xyz/idea-crack.html 我的个人博客:https://www.tecchen.xyz,博文同步发布到博客园. 由于精力有限,对文章 ...

  9. Mac系统升级至OS X Mavericks后Genymotion出现的问题及解决方法

    Apple的系统升级终于免费了,可开心满满地升级到OS X Mavericks后,Android模拟器之王Genymotion罢工了.遇到两个问题:1. Unable to load VirtualB ...

  10. 关闭MAC特效

    Launchpad首先打开"终端"(Finder->应用程序->实用工具->终端),并且输入以下命令:defaults write com.apple.dock ...