【SSH网上商城项目实战11】查询和删除商品功能的实现

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51360804

目录(?)[+]

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

1. 查询商品功能的实现

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

[javascript] view plain copy

 

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

        测试结果如下:

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

2. 删除商品功能的实现

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

[javascript] view plain copy

 

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

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

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

[java] view plain copy

 

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

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

[java] view plain copy

 

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

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

[html] view plain copy

 

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

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

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

     (注:到最后我会提供整个项目的源码下载!欢迎大家收藏或关注)

       相关阅读:http://blog.csdn.net/column/details/str2hiberspring.html

_____________________________________________________________________________________________________________________________________________________

-----乐于分享,共同进步!

-----更多文章请看:http://blog.csdn.net/eson_15

时间: 2024-10-18 13:10:57

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

【SSH网上商城项目实战15】线程、定时器同步首页数据(类似于CSDN博客定期更新排名)

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51387378 目录(?)[+]         上一节我们做完了首页UI界面,但是有个问题:如果我在后台添加了一个商品,那么我必须重启一下服务器才能重新同步后台数据,然后刷新首页才能同步数据.这明显不是我们想要的效果,一般这种网上商城首页肯定不是人为手动同步数据的,那么如何解决呢?我们需要用到线程和定时器来定时自动同步首页数据. 1. Timer和Timer

【SSH网上商城项目实战14】商城首页UI的设计

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51373403 目录(?)[+]         前面我们利用EasyUI和SSH搭建好了后台的基本框架,做好了后台的基本功能,包括对商品类别的管理和商品的管理等,这一节我们开始搭建前台页面. 做首页的思路:假设现在商品的业务逻辑都有了,首先我们需要创建一个监听器,在项目启动时将首页的数据查询出来放到application里,即在监听器里调用后台商品业务逻辑的

【SSH网上商城项目实战18】过滤器实现购物登录功能的判断

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51425010 目录(?)[+]         上一节我们做完了购物车的基本操作,但是有个问题是:当用户点击结算时,我们应该做一个登录的判断,判断用户有没有登录,没有登录的话,得首先让用户登录.这就用到了过滤器的技术了,过滤器是专门拦截页面请求的,它与拦截器的原理差不多,拦截器是专门拦截Action请求的,所以各有所用,如果直接是页面的跳转,不经过Actio

【SSH网上商城项目实战13】Struts2实现文件上传功能

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51366384 目录(?)[+]         上一节我们做完了添加和更新商品的功能,这两个部分里有涉及到商品图片的上传,并没有详细解说.为此,这篇文章详细介绍一下Struts2实现文件上传的功能. 1. 封装文件信息         我们首先得有一个Model来封装文件的信息,这个Model里需要有三个属性:文件.文件类型和文件名.针对我们要传的图片,我们

【SSH网上商城项目实战06】基于DataGrid的数据显示

版权声明:尊重博主原创文章,转载请注明出处哦~http://blog.csdn.net/eson_15/article/details/51322262 目录(?)[+]         EasyUI中DataGrid以表格形式展示数据,并提供了丰富的选择.排序.分组和编辑数据的功能支持.DataGrid的设计用于缩短开发时间,并且使开发人员不需要具备特定的知识.它是轻量级的且功能丰富.单元格合并.多列标题.冻结列和页脚只是其中的一小部分功能. 1. 回顾一下第4节内容         在第4节

SSH框架网上商城项目第11战之查询和删除商品功能实现_java

在第8节我们完成了查询和删除商品类别的功能,那么现在实现查询和删除商品的功能就很好做了,原理和第8节一模一样,只是修改一些参数,比如请求不同的action等.由于查询和删除商品不需要弹出新的UI窗口,所以我们只要完成完成query.jsp中相应的部分以及相应的后台即可.1. 查询商品功能的实现查询功能主要在查询框中实现,从上一节可知,查询框用的是一个text:"<input id='ss' name='serach' />",我们通过把普通的文本框转化为查询搜索文本框来实现

SSH框架网上商城项目第10战之搭建商品类基本模块_java

前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分.1. 数据库建表并映射Model首先我们在数据库中新建一张表,然后使用逆向工程将表映射成Model类,表如下: /*=============================*/ /* Table: 商品表结构 */ /*=============================*/ create table product ( /* 商品编号,自动增长 */ id int primary key not null auto_

SSH框架网上商城项目第23战之在线支付功能实现_java

         上一节我们做好了支付页面的显示,从上一节支付页面显示的jsp代码中可以看出,当用户点击确认支付时,会跳到${shop}/pay_goBank.action的action,也就是说,提交后我们得在payAction中的goBank方法中处理一些逻辑(即21节demo中的那个流程图的逻辑),即获得明文,将明文加密成签名(密文)然后再去访问易宝服务器,易宝连接银行,完成支付. 但是考虑到MVC设计模式,我们会将上面这些业务逻辑放到Service层中处理,所以下面我们来实现21节中那个

SSH框架网上商城项目第17战之购物车基本功能_java

上一节我们将商品的详细页面做完了,并使用了Hibernate的二级缓存加载详细页面来提高系统的性能,点击文章查看:.这节我们开始做购物车部分. 1. 添加新的表首先我们向数据库中添加几张表:用户表.订单状态表.订单表(购物车表)以及购物项表.用户表中存有用户的基本信息,订单状态表中主要存储订单的状态,比如已发货这种,订单表主要存储用户的信息和订单的状态,所以跟用户表和订单状态表关联,购物项表存储某个商品以及所属的订单,所以跟商品表和订单表相关联.具体的表信息见下面的sql语句: /*======