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

 更新时间:2020年04月22日 16:34:51   作者:eson_15  
这篇文章主要为大家详细介绍了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"就通过流传到前台了,接收到说明删除成功。看一下效果:

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

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

相关文章

  • 详解Java编写算法时如何加快读写数据速度

    详解Java编写算法时如何加快读写数据速度

    这篇文章主要为大家详细介绍了Java在编写算法时如何加快读写数据速度,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2024-03-03
  • java并发包中CountDownLatch和线程池的使用详解

    java并发包中CountDownLatch和线程池的使用详解

    这篇文章主要介绍了java并发包中CountDownLatch和线程池的使用详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • spring controller层引用service报空指针异常nullpointExceptio问题

    spring controller层引用service报空指针异常nullpointExceptio问题

    这篇文章主要介绍了spring controller层引用service报空指针异常nullpointExceptio问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java中的构造方法和方法重载完整代码

    Java中的构造方法和方法重载完整代码

    在Java编程中,构造方法用于初始化对象,而方法重载允许同一个类中存在多个同名方法但参数不同,文中通过代码及图文介绍的非常详细,需要的朋友可以参考下
    2024-10-10
  • java中编码问题的处理方案

    java中编码问题的处理方案

    这篇文章主要介绍了java中编码问题的处理方案的相关资料,需要的朋友可以参考下
    2015-07-07
  • java留言管理系统中模糊查询实例分享

    java留言管理系统中模糊查询实例分享

    这篇文章主要为大家详细介绍了基于MVC+DAO的留言管理系统中java模糊查询的简单使用方法,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • Java中指定时区的3种方法

    Java中指定时区的3种方法

    这篇文章主要介绍了Java中指定时区的3种方法,本文是一个JAVA项目和.NET项目通讯时遇到的问题,本文给出JAVA中的3种解决方法,需要的朋友可以参考下
    2015-02-02
  • java实现后台返回base64图形编码

    java实现后台返回base64图形编码

    这篇文章主要介绍了java实现后台返回base64图形编码,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • java实现后台图片跨域上传功能

    java实现后台图片跨域上传功能

    这篇文章主要给大家介绍了关于java实现后台图片跨域上传功能的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-07-07
  • Mybatis日志模块的适配器模式详解

    Mybatis日志模块的适配器模式详解

    这篇文章主要介绍了Mybatis日志模块的适配器模式详解,,mybatis用了适配器模式来兼容这些框架,适配器模式就是通过组合的方式,将需要适配的类转为使用者能够使用的接口
    2022-08-08

最新评论