【SSH网上商城项目实战11】查询和删除商品功能的实现
转自: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 $('#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中相应部分的代码补全:

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层开始:

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方法:

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中配置:
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"就通过流传到前台了,接收到说明删除成功。看一下效果:


测试成功,至此,商品的搜索和删除功能做完了。
【SSH网上商城项目实战11】查询和删除商品功能的实现的更多相关文章
- 【SSH网上商城项目实战23】完成在线支付功能
转自: https://blog.csdn.net/eson_15/article/details/51464415 上一节我们做好了支付页面的显示,从上一节支付页面显示的jsp代码中可以看出,当用 ...
- 【SSH网上商城项目实战30】项目总结
转自:https://blog.csdn.net/eson_15/article/details/51479994 0. 写在前面 项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了 ...
- 【SSH网上商城项目实战30】项目总结(附源码下载地址)
项目基本完成了,加上这个总结,与这个项目相关的博客也写了30篇了,积少成多,写博客的过程是固化思路的一个过程,对自己很有用,同时也能帮助别人.顺便说个题外话,在学习的过程中肯定会遇到很多异常出现,我们 ...
- 【SSH网上商城项目实战16】Hibernate的二级缓存处理首页的热门显示
转自:https://blog.csdn.net/eson_15/article/details/51405911 网上商城首页都有热门商品,那么这些商品的点击率是很高的,当用户点击某个热门商品后需要 ...
- 【SSH网上商城项目实战27】域名空间的申请和项目的部署及发布
转自:https://blog.csdn.net/wwww_com/article/details/54405355 前面陆陆续续的完成了网上商城的一些基本功能,虽然还有很多地方有待完善,但是不影响 ...
- 【SSH网上商城项目实战21】从Demo中看易宝支付的流程
转自: https://blog.csdn.net/eson_15/article/details/51447492 这一节我们先写一个简单点的Demo来测试易宝支付的流程,熟悉这个流程后, ...
- 【SSH网上商城项目实战09】添加和更新商品类别功能的实现
转自:https://blog.csdn.net/eson_15/article/details/51347734 上一节我们做完了查询和删除商品的功能,这一节我们做一下添加和更新商品的功能. 1. ...
- 【SSH网上商城项目实战05】完成数据库的级联查询和分页
转自:https://blog.csdn.net/eson_15/article/details/51320212 上一节我们完成了EasyUI菜单的实现.这一节我们主要来写一下CategorySer ...
- 【SSH网上商城项目实战01】整合Struts2、Hibernate4.3和Spring4.2
转自:https://blog.csdn.net/eson_15/article/details/51277324 今天开始做一个网上商城的项目,首先从搭建环境开始,一步步整合S2SH.这篇博文主要总 ...
随机推荐
- iOS出现 _OBJC_CLASS_$_ZSHomeServiceDataElementGroupLargeImage", referenced from:以及linker command failed with exit code 1 (use -v to see invocation)的错误分析
先说第一个问题 出现这样的错误我总结的原因有两个,我碰到过的: 1.文件重命名,在你创建文件的时候重名了 2.如果你是在一个类中又创建了一个或者多个类,那么你可能没有实现你写的类,也就是你只是@int ...
- combining-filters
The previous two examples showed a single filter in use. In practice, you will probably need to filt ...
- 【FAQ】tomcat启动jdk版本不一致
一.tomcat7.exe与startup.bat的区别: 1.这两个都可以启动tomcat,但tomcat7.exe必须安装了服务才能启动,而startup.bat不需要 2.另外一个区别是它们启动 ...
- SpringMvc渲染视图
这篇博文讨论的问题是从ModelAndView如何渲染到页面. 首先要知道每个请求处理完之后都会返回一个ModelAndView对象. 这里我分6种情况来分析,代表6种返回类型: ModelAndVi ...
- 极其简单的用JS在浏览器中创建下载文件的方法
有这样一个需求,在js中动态创建一个页面,然后下载该页面为word文档,研究了一上午,最后发现实现起来如此简单. 在js中创建如下方法:(直接复制即可) function downloadFile(f ...
- ubuntu 14.04网卡配置以及关闭防火墙
一.Ubuntu网卡配置如下: 在文件/etc/network/interfaces中进行以下配置 auto lo iface lo inet lookback auto eth0 iface eth ...
- [BZOJ 5155][Tjoi2014]电源插排
传送门 网上大部分题解都写得是动态开点线段树,然而像\(MiEcoku\)这么懒惰的显然不会去写线段树... \(\color{green}{solution}\) 我们考虑来点骚操作. 线段树维护的 ...
- 20190415 踩过的VMware那些坑,安装CentOS 7后无法连网
前言 从2018年12月解散粤储软件公司开始,到现在已经失业将近5个月了,还欠下了四五十万的债,最近决心转Java开发,学习Spring Boot,期望尽快摆脱困境.清掉欠的那些钱. 因为Spring ...
- typescript 入门
为什么要使用typescript? 出现拼写错误,可以立即指出错误. 出现模块引入错误,立即指出错误. 出现函数.变量类型错误,立即指出错误. 在react组件中制定好了基本的props和state之 ...
- Android多媒体技术之视频播放
1.Android中视频播放方式 surfaceView+MediaPlayer,通过MediaPlayer来控制视频的播放.暂停.进度等: 使用VideoView 来播放,这个类其实也是继承了Sur ...