苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

夜光序言:

 

该面对的总要面对,压力也同样是动力。

“奈何小生清心寡欲多年,却因靓女一笑起了荤念。”

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

 

 

 

正文:客户关系管理系统

环境搭建

 

创建一个空项目

项目原型导入

copy原型中的src和WebRoot

发布,运行,查看功能

 

功能分析

  1. 添加客户
  2. 查看所有客户
  3. 编辑客户(查一个)
  4. 删除客户
  5. 多条件组合查询

 

导jar包 

  1. mysql驱动
  2. c3p0(它的配置文件)
  3. Genius-tools.1.4.2.jar
  4. commons-bean-utils.jar
  5. commons-logging.jar
  6. commons-dbutils.jar

以上很重要~~

页面分析

  1. index.jsp:它什么都没做,直接转发到frame.jsp;
  2. frame.jsp:框架页,包含top.jsp和webcome.jsp
  3. top.jsp:

 

一个标题

  • 链接1:添加客户,请求add.jsp;
  • 链接2:查看客户,请求list.jsp;
  • 链接3:高级搜索,请求query.jsp;

嘿哈~~

  1. add.jsp:一个添加客户的表单;
  2. list.jsp:一个<table>用来显示所有客户;
  3. query.jsp:一个高级搜索的表单;

 

  1. edit.jsp:一个修改客户的表单;
  2. msg.jsp:用来显示信息(添加客户成功)

 

表和类的创建

涉及哪些表

  1. 客户表

CREATE TABLE Key_customer(

cid CHAR(32) PRIMARY KEY,

cname VARCHAR(40) NOT NULL,

gender VARCHAR(6) NOT NULL,

birthday CHAR(10),

cellphone VARCHAR(15) NOT NULL,

email VARCHAR(40),

description VARCHAR(500)

);

 

涉及的类

  1. domain:Customer
  2. dao:CustomerDao
  3. service:CustomerService
  4. servlet:CustomerServlet

该面对的总要面对,压力也同样是动力

添加功能

流程分析

  1. add.jsp àCustomerServlet#addCustomer()àmsg.jsp

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

代码的实现

  1. DAO#addCustomer(Customer c):
  • 给出sql语句的模板
  • 把参数c转换成一个Object[]
  • 调用QueryRunner的update方法。
  1. Service#addCustomer(Customer c):
  • 直接调用dao的addCustomer(c);

 

查看所有客户

 

查看所有客户的流程分析

  1. top.jsp à CustomerServlet#findAll() à list.jsp

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

DAO:

  • sql = “select * from t_customer”;
  • qr.query(),需要把结果集映射成List<Customer>,所以使用BeanListHandler

Service:略

 

编辑功能

 

编辑功能分两步

  1. 按id查询,即加载~~
  2. 修改客户信息

 

按id查询流程

  1. list.jsp中每个客户信息之后都有编辑链接àCustomerServlet#load()àedit.jsp

DAO:

  1. sql = “select * from t_customer where cid=?”;
  2. qr.query(),使用BeanHandler即可。

Service:略

  1. 编辑第2步
  2. edit.jsp à CustomerServlet#edit() à msg.jsp

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

高级搜索

 

流程分析

 

query.jsp à CustomerServlet#query() à list.jsp

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

分页:

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

页面需要的分页数据:

  1. 当前页:pageCode,简称pc
  2. 总页数:totalPage,简称tp
  3. 当前记录:datas

 

Servlet:

pc:

  • 如果页面传递了pc,那么使用页面传递的;
  • 如果页面没有传递,那么pc=1

tp:

  1. 总记录数:totalRecord,简称tr
  2. 每页记录数:pagesize,简称ps
  3. tr%ps==0 ? tr/ps : tr/ps + 1;

 

tr:

  1. 让dao来select count(*)就可以知道总记录数

 

ps:

  1. 系统数据,我们可以自己决定

 

  1. datas:
  1. 让dao来select …. limit来搞定

 

创建分页Bean

  因为分页数据太多,而且分页数据总是要在各层之间来回传递,所以我们需要把所有分页数据封装到一个对象中。PageBean

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)

苦尽甘来 一个月学通JavaWeb(四十二 系统实训)