客户信息管理系统5—客户信息的删除(一)

客户信息管理系统5—客户信息的删除(一)

3、功能三:客户信息的删除:

(1)单个删除:

1.1单个删除流程

流程:


1.2单个删除实现代码
1.2.1单个删除分析

点击单个删除时, 需要将 客户的 id 带过去

在显示客户信息的页面, 添加删除的链接 .

1.2.2代码组成

findAllCustomer.jsp+DeleteOneServlet + CustomersService + CustomersDao +  CustomersDaoImplement

 

1.2.3代码功能介绍

【1】findAllCustomer.jsp:查询结果显示页面,删除客户信息的入口

【2】DeleteOneServlet:删除单个客户信息web层

【3】CustomersService :业务层(deleteOne(id)方法)

【4】CustomersDao:dao接口层(deleteOne(id)方法)

【5】CustomersDaoImplement:dao结构层实现类(deleteOne(id)方法)

1.2.4代码详细
1.2.4.1 findAllCustomer.jsp:查询结果显示页面,删除客户信息的入口

详细看功能二代码实现,已经写好了

1.2.4.2 DeleteOneServlet:删除单个客户信息web层       

package com.zhku.jsj144.zk.web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhku.jsj144.zk.service.CustomersService;

public class DeleteOneServlet extends HttpServlet {

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
	
		String id=req.getParameter("id");//要删除记录的id
		
		//删除一条记录【单个客户信息】
		CustomersService customerService=new CustomersService();//业务层对象
		customerService.deleteOne(id);
		//重新查询记录
		req.getRequestDispatcher("/FindAllServlet").forward(req, resp);//返回删除一条记录后的查询结果情况
	}
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		doPost(req, resp);
	}
}

1.2.4.3 CustomersService :业务层(deleteOne(id)方法)

详细看功能一代码实现,已经写好了

1.2.4.4 CustomersDao:dao接口层(deleteOne(id)方法)

详细看功能一代码实现,已经写好了

1.2.4.5 CustomersDaoImplement:dao结构层实现类(deleteOne(id)方法)

详细看功能一代码实现,已经写好了

1.2.5 javascript:void(0)学习

javascript:void(0):作用取消href的默认点击

学习博文:a标签中关于javascriptvoid(0)的几个问题

网址:http://www.cnblogs.com/andydao/p/3470756.html

1.2.6 添加checkbox是否全部选中(全选,全部选,部分选)【利用javascript实现】

选中状态<input type="checkbox"name="choose" id="chooseFirst"οnclick="checkAll()"></td>

//全选或者全不选
   function checkAll(){
      //id="chooseFirst"  如果选中,下面的checkbox全部被选中
      var chooseAll=document.getElementsByName("choose");//全部choose
      var choose=document.getElementById("chooseFirst");//第一个choose
      //选中状态:checked可以为true或者false
      if(choose.checked){
         for(var i=0;i<chooseAll.length;i++){
            chooseAll[i].checked=true;
         }
     
      }    
      //id="chooseFirst"  如果没有选中,下面的checkbox全部不选中
      else{
         for(var i=0;i<chooseAll.length;i++){
               chooseAll[i].checked=false;
            }
      }
   }


1.2.7删除提示框【利用javascript实现】

标签:

<a href="javascript:void(0)" οnclick="confirm_deleteOne('${customer.id}')">删除</a>

javascript代码:

//删除确认对话框
   function confirm_deleteOne(id) {
// alert(id);
    var message=confirm("你确定要删除这条记录吗?");
    if(message==true){
      
//      window.location("/customer_system/DeleteOneServlet?id="+id);//错误【使用错误,是等号=,不是括号()】
//    window.location="/customer_system/DeleteOneServlet?id="+id;//正确
 
//       document.location.herf="/customer_system/DeleteOneServlet?id="+id;//错误[拼写错误]
      window.location.href="/customer_system/DeleteOneServlet?id="+id;//正确
//    document.location.href="/customer_system/DeleteOneServlet?id="+id;//正确
//       document.location="/customer_system/DeleteOneServlet?id="+id;//正确
    }
   }

(2)批量删除:

2.2.1批量删除分析

点击单个删除时, 需要将 客户的 id 带过去

在显示客户信息的页面, 添加删除的链接 .

2.2.2代码组成

findAllCustomer.jsp+DeleteAllServlet + CustomersService + CustomersDao +  CustomersDaoImplement

 

2.2.3代码功能介绍

【1】findAllCustomer.jsp:查询结果显示页面,批量删除客户信息的入口

【2】DeleteAllServlet:批量客户信息web层

【3】CustomersService :业务层(deleteAll(choose)方法)

【4】CustomersDao:dao接口层(deleteAll(choose)方法)

【5】CustomersDaoImplement:dao结构层实现类(deleteAll(choose)方法)

2.2.4代码详细
2.2.4.1 findAllCustomer.jsp:查询结果显示页面,批量删除客户信息的入口

详细看功能二代码实现,已经写好了

2.2.4.2 DeleteAllServlet:批量客户信息web层

package com.zhku.jsj144.zk.web;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.zhku.jsj144.zk.service.CustomersService;

public class DeleteAllServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		//删除多条记录【批量删除】--考虑事务处理机制
		//获取批量删除的id号
		String choose[]=request.getParameterValues("choose");//选择的choose数量
		
		//进行批量删除
		CustomersService customersService=new CustomersService();
		customersService.deleteAll(choose);//批量删除
		
		//重新查询记录
		request.getRequestDispatcher("/FindAllServlet").forward(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);

	}

}

2.2.4.3 CustomersService :业务层(deleteAll(choose)方法)

详细看功能一代码实现,已经写好了

2.2.4.4 CustomersDao:dao接口层(deleteAll(choose)方法)

详细看功能一代码实现,已经写好了

2.2.4.5 CustomersDaoImplement:dao结构层实现类(deleteAll(choose)方法)

详细看功能一代码实现,已经写好了

(3)批量删除的问题与分析

问题:耦合问题出现!Connection对象应该出现待在dao层,而不应该出现在service层,这样导致service层和到层耦合了

思考:如何进行解耦呢?【解耦合】

这样Service层就不会使用dao层才会使用的Connection对象了。

分析:ThreadLocal类[线程本地类]的使用,可以解决这个问题

(4)本地线程类:ThreadLocal类

1、ThreadLocal类介绍

线程本地类

内部是维护了一个map集合,

如果调用 set(Object )方法, 就是将  这个object 存到这个map 中, key 就是 当前的线程, 使用threadLocal存数据时,实际上是存到 了map中, 但是存到这个map 中, key 永远都是 运行当前的代码的线程,

同样当调用get方法时, 也是以 当前的代码运行所在的线程为 key, 去 map 中 获得值 ,map.get(线程id号 )

2、ThreadLocal理解关键

关键:

ThreadLocal是如何做到为每一个线程维护变量的副本的呢?

其实实现的思路很简单:

ThreadLocal类中定义了一个ThreadLocalMap,每一个Thread中都有一个该类型的变量——threadLocals——用于存储每一个线程的变量副本,

Map中元素的键为线程对象,而值对应线程的变量副本。

3、ThreadLocal参考文章
【1】参考一

文章:ThreadLocal详解

网址:http://www.cnblogs.com/dreamroute/p/5034726.html

【2】参考二

文章:彻底理解ThreadLocal

网址:http://www.cnblogs.com/taiwan/p/7533569.html

 

项目详细代码资源:

本人的github项目地址

https://github.com/Forever99/customer_system

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值