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

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

$('#ss').searchbox({
 //触发查询事件
 searcher:function(value,name){ //value表示输入的值
 //添加触发代码 

 $('#dg').datagrid('load',{//重新load,参数name指定为用户输入value
  name: value
 }); 

 },
 prompt:'请输入搜索关键字'
});

测试结果如下:

查询很简单,跟上一节load所有商品一样,只不过查询的时候参数设为用户输入的值,加载所有的时候参数设为空即可。
2. 删除商品功能的实现
接下来做删除商品功能,首先我们把query.jsp中相应部分的代码补全:

{
 iconCls: 'icon-remove',
 text:'删除商品',
 handler: function(){
  //添加触发代码 

 var rows = $("#dg").datagrid("getSelections");//判断是否有选中行记录,使用getSelections获取选中的所有行
 //返回被选中的行,如果没有任何行被选中,则返回空数组
 if(rows.length == 0) {
  //弹出提示信息
  $.messager.show({ //语法类似于java中的静态方法,直接对象调用
  title:'错误提示',
  msg:'至少要选择一条记录',
  timeout:2000,
  showType:'slide',
  });
 } else {
  //提示是否确认删除,如果确认则执行删除的逻辑
  $.messager.confirm('删除的确认对话框', '您确定要删除此项吗?', function(r){
  if (r){
   //1. 从获取的记录中获取相应的的id,拼接id的值,然后发送后台1,2,3,4
   var ids = "";
   for(var i = 0; i < rows.length; i ++) {
   ids += rows[i].id + ",";
   }
   ids = ids.substr(0, ids.lastIndexOf(","));
   //2. 发送ajax请求
   $.post("product_deleteByIds.action",{ids:ids},function(result){
   if(result == "true") {
    //将刚刚选中的记录删除,要不然会影响后面更新的操作
    $("#dg").datagrid("uncheckAll");
    //刷新当前页,查询的时候我们用的是load,刷新第一页,reload是刷新当前页
    $("#dg").datagrid("reload");//不带参数默认为上面的queryParams
   } else {
    $.messager.show({
    title:'删除异常',
    msg:'删除失败,请检查操作',
    timeout:2000,
    showType:'slide',
    });
   }
   },"text");
  }
  });
 }
 }
}

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

public interface ProductService extends BaseService<Product> { 

 //查询商品信息,级联类别
 public List<Product> queryJoinCategory(String type, int page, int size); //使用商品的名称查询
 //根据关键字查询总记录数
 public Long getCount(String type);
 //根据ids删除多条记录
 public void deleteByIds(String ids);
} 

@SuppressWarnings("unchecked")
@Service("productService")
public class ProductServiceImpl extends BaseServiceImpl<Product> implements ProductService {
 //省略其他代码…… 

 @Override
 public void deleteByIds(String ids) {
 String hql = "delete from Product p where p.id in (" + ids + ")";
 getSession().createQuery(hql).executeUpdate();
 } 

}

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

@Controller("productAction")
@Scope("prototype")
public class ProductAction extends BaseAction<Product> { 

 //省略其他代码…… 

 public String deleteByIds() {
 System.out.println(ids);
 productService.deleteByIds(ids);
 //如果删除成功就会往下执行,我们将"true"以流的形式传给前台
 inputStream = new ByteArrayInputStream("true".getBytes());
 return "stream";
 }
}

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

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

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

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

本文地址:http://blog.csdn.net/eson_15/article/details/51360804

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SSH框架网上商城项目第1战之整合Struts2、Hibernate4.3和Spring4.2

    本文开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总结一下如何整合Struts2.Hibernate4.3和Spring4.2. 整合三大框架得先从搭建各部分环境开始,也就是说首先得把Spring,Hibernate和Struts2的环境搭建好,确保它们没有问题了,再做整合.这篇博文遵从的顺序是:先搭建Spring环境-->然后搭建Hibernate环境--> 整合Spring和Hibernate --> 搭建Struts2环境 --> 整合Spri

  • SSH框架网上商城项目第19战之订单信息级联入库以及页面缓存问题

    购物车这一块还剩最后两个问题,就是订单信息的级联入库和页面缓存,这里的信息是指购物车和购物项,即我们将购物车的信息存入数据库的同时,也存入每个购物项的信息,而且外键都关联好,这涉及到了Hibernate中的级联入库问题:页面缓存问题指的是当用户确认了订单后,如果点后退,又会回到订单确认页面,刚刚的订单确认页面又出来了,而且session还在,信息还是刚刚的信息,这明显不是我们想要的结果,我们会在后面一一分析.这一节主要来讨论订单信息的级联入库以及页面的缓存问题. 1. 订单信息的级联入库 Hib

  • SSH框架网上商城项目第16战之Hibernate二级缓存处理首页热门显示

    网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要进入商品的详细信息页面,就像淘宝里面那样.那么每次点击都要去后台查询一下该商品的详细信息,就会发送相应的sql语句,每次刷新一下详细页面也会发sql语句,这样的话,性能肯定会受到很大的影响.那么使用Hibernate的二级缓存就可以解决这个问题. 有些人可能会想,我们可以使用重定向,这样的话,在用户第一次访问的时候把信息查出来放到session中,以后每次用户刷新就可以去session中拿了,这样就不用去数据库中

  • SSH框架网上商城项目第5战之商品类别级联查询和分页功能

    上文我们完成了EasyUI菜单的实现,点击这里查看,这一节我们主要来写一下CategoryServiceImpl实现类,完成数据库的级联查询.一般项目从后往前做,先做service(我们没有抽取Dao,最后再抽取),做完了再做上面层. 在写之前,先看一下数据库中的表的情况: drop database if exists shop; /*创建数据库,并设置编码*/ create database shop default character set utf8; use shop; /*删除管理员

  • php网上商城购物车设计代码分享

    首先,购物车的数据库设计: 1. id 2. goods_id 商品ID 3. session_id 购物车ID 4. goods_sn 商品编码 5. goods_name 商品名称 6. shop_price 商品商城售价 7. goods_price 商品真实售价(与shop_price的区别在于,当打折的时候,shop_price是打折之前商品的售价,而goods_price是打折之后的) 8. goods_number 数量 9. weight 商品重量 10. goods_attr

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

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

  • SSH框架网上商城项目第20战之在线支付平台

    之前已经完成了首页的显示,用户添加购物车,确认订单等功能,下面就是支付功能的开发了.用户确认了订单后会直接跳转到支付页面进行在线支付,在线支付需要第三方的接口,这一节主要介绍一些关于第三方支付的内容,从下一节开始,我们真正开发在线支付模块. 1. 在线支付介绍 在线支付是指卖方与买方通过因特网上的电子商务网站进行交易时,银行为其提供网上资金结算服务的一种业务.它为企业和个人提供了一个安全.快捷.方便的电子商务应用环境和网上资金结算工具.在线支付不仅帮助企业实现了销售款项的快速归集,缩短收款周期,

  • SSH框架网上商城项目第7战之整合Struts2和Json

    上篇我们完成了DataGrid显示json数据,但是没有和后台联系在一起,只是单纯地显示了我们自己弄的json数据,这一节我们将json和Struts2整合,打通EasyUI和Struts2之间的交互. 1. json环境的搭建 json环境搭建很简单,导入json的jar包即可,如下: (注:json-lib-2.4的jar包下载地址:http://xiazai.jb51.net/201605/yuanma/json-lib-2.4(jb51.net).rar ) 2. 完善Action 在D

  • PHP实现的交通银行网银在线支付接口ECSHOP插件和使用例子

    最近,一个项目要求做交通银行在线支付,ecshop本身没有这方面的接口,于是通过一些时间的专研,做了一个插件出来.有好的东西,当然要分享,在此特地分享出来,希望能够帮助到跟我一样有需要的人,为大家减轻一下开发的负担,也多请大家指出一些好的方法和建议,相互的学习.进步! 在使用插件之前,请配置好交通银行在线支付的环境(具体安装方法,交行提供的demo会有,也不是很难,注意好细节就行).安装好之后,请将把下面的插件源码和语言包源码按路径保存到相应文件,最后进入后台的支付模块安装即可. 插件源码(in

  • SSH框架网上商城项目第8战之查询和删除商品类别功能实现

    上一节我们完成了使用DataGrid显示所有商品信息,这节我们开始添加几个功能:添加.更新.删除和查询.首先我们实现下前台的显示,然后再做后台获取数据. 1. 添加.更新.删除和查询功能的前台实现 DataGrid控件里有个toolbar属性,是添加工具栏的,我们可以在toolbar属性中添加这些按钮来实现相应的功能.先看一下官方文档对toolbar的定义: 我们使用数组的方式定义工具栏,在query.jsp页面中新添加如下代码: <%@ page language="java"

随机推荐