在该项目中,后台代码主要放在src文件夹中,在 src中又具体分不同的包,数据库的连接参数在hibernate.cfg.xml文件中,访问数据的控制类在controller.service包中,视图模型放在在model中,接口类放在bussiness.dao中,实现类放在bussiness.impl中。包结构如图5-4所示:
图 5-1 项目包结构图
包名(结构层次) |
说明 |
business.basic |
数据连接、访问,管理数据库连接类和访问基类 |
annotation |
存放日志切面文件 |
bussiness.dao |
业务逻辑设计层,管理业务逻辑设计接口 |
bussiness.impl |
业务逻辑实现层,管理业务逻辑设计的实现类 |
bussiness.factory |
业务逻辑的工厂层,管理业务逻辑的组装工厂类 |
Controller.service |
业务逻辑控制层,管理用于与页面进行交互的控制类 |
model |
实体层,管理表实体类和视图实体类 |
servlet.filter |
网站过滤器包,管理网站过滤器类 |
util |
工具类包,管理系统中的工具类 |
test |
测试包,测试文件存放位置 |
Common.properties |
公共类包,管理公共类 |
表 5-1 项目结构说明表
命名规则:
项目文件命名规范如下表5-2所示:
标识符 |
说明 |
T实体类名 |
表实体类,如T_User表的实体类为TUser |
V实体类名 |
视图实体类,如V_User视图的实体类为VUser |
业务逻辑类名DAO |
业务逻辑接口类,如UserDAO |
业务逻辑类名Impl |
业务逻辑实现类,如UserDAOImpl |
控制类类名controller |
业务控制类,如学生管理的控制类UserController |
Jsp文件 |
业务类,如Login.jsp |
表 5-2 项目文件名称命名规范
T_ : 表名前缀,表示table_
V_ : 视图前缀,表示view_
up_ : 存储过程前缀,表示userprocedure_
utri_ : 触发器前缀,表示usertrigger
pk_ : 表列的主键约束前缀
fk_ : 表列的外键约束前缀
ck_ : 表列的check约束前缀
def_ : 表列的默认约束前缀
(1) T_Customer 前端网站客户表
customeraccount设置为主键约束,作为前端网站用户登录账号
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
customeraccount |
INT |
是 |
是 |
客户账号 |
2 |
pwd |
VARCHAR |
否 |
否 |
客户密码 |
3 |
Customername |
VARCHAR |
否 |
否 |
客户名称 |
4 |
tel |
INT |
否 |
否 |
客户电话 |
5 |
agend |
VARCHAR |
否 |
否 |
客户性别 |
6 |
state |
BIT |
否 |
否 |
客户账户状态 |
7 |
customercreatetime |
DATETIME |
否 |
否 |
客户创建时间 |
表 5-3 前端网站客户表
(2)T_Articles文章表
articlesid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
articlesid |
INT |
是 |
是 |
文章id主键 |
2 |
title |
VARCHAR |
否 |
是 |
文章标题 |
3 |
articlestypeid |
INT |
否 |
否 |
文章类型 |
4 |
description |
VARCHAR |
否 |
否 |
文章描述 |
5 |
photoid |
INT |
否 |
否 |
文章标志图 |
6 |
state |
BIT |
否 |
否 |
状态 |
7 |
author |
VARCHAR |
否 |
否 |
文章作者 |
8 |
articlescreatetime |
DATETIME |
否 |
否 |
文章创建时间 |
表 5-4 网站文章表
(3)T_ArticlesContent文章内容表
articlescontentid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
articlescontentid |
INT |
是 |
是 |
文章内容id |
2 |
articlesid |
INT |
否 |
否 |
文章id |
3 |
ordernum |
INT |
否 |
否 |
内容序号 |
4 |
photoid |
INT |
否 |
否 |
图片id |
5 |
content |
VARCHAR |
否 |
否 |
内容 |
6 |
issign |
INT |
否 |
否 |
是否是标志图 |
7 |
state |
BIT |
否 |
否 |
状态 |
表 5-5 网站文章内容表
(4)T_ArticlesType网站文章类型表
articlestypeid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
articlestypeid |
INT IDENTITY |
是 |
是 |
文章类型id |
2 |
state |
VARCHAR(50) |
否 |
否 |
状态 |
3 |
articlestypename |
VARCHAR(2) |
否 |
否 |
文章类型名称 |
表 5-6 网站文章类型表
(5)T_Photo图片表
photoid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
photoid |
INT IDENTITY |
是 |
是 |
照片id |
2 |
path |
VARCHAR(500) |
否 |
是 |
路径 |
3 |
status |
VARCHAR(10) |
否 |
否 |
状态 |
表 5-7 图片表
(6)T_CustomerCar客户爱车表
customercarid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
customercarid |
INT |
是 |
是 |
车辆id |
2 |
series |
VARCHAR |
否 |
否 |
车系 |
3 |
chassisnumber |
VARCHAR |
否 |
是 |
底盘号码 |
4 |
brand |
VARCHAR |
否 |
是 |
品牌 |
5 |
manufacturer |
VARCHAR |
否 |
是 |
厂商 |
6 |
licenseplatenumber |
VARCHAR |
否 |
是 |
车牌号 |
7 |
engine number |
VARCHAR |
否 |
是 |
发动机号码 |
8 |
cartypeid |
INT |
否 |
否 |
车辆类型 |
9 |
photoid |
INT |
否 |
否 |
上传照片 |
10 |
state |
BIT |
否 |
否 |
状态 |
11 |
customercaraccount |
INT |
否 |
否 |
客户id |
12 |
carname |
VARCHAR |
否 |
否 |
车系名称 |
表 5-8 客户爱车表
(7)T_Car车辆表
carid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
carid |
INT |
是 |
是 |
车辆id |
2 |
series |
VARCHAR |
否 |
是 |
车系 |
3 |
guideprice |
DOUBLE |
否 |
否 |
厂商指导价 |
4 |
brandid |
VARCHAR |
否 |
否 |
品牌 |
5 |
manufacturer |
VARCHAR |
否 |
否 |
厂商 |
6 |
licenseplatenumber |
VARCHAR |
否 |
否 |
销售状态 |
7 |
engine number |
VARCHAR |
否 |
否 |
上市时间 |
8 |
cartypeid |
INT |
否 |
否 |
车辆类型 |
7 |
photoid |
INT |
否 |
否 |
照片 |
10 |
state |
BIT |
否 |
否 |
状态 |
11 |
carname |
VARCHAR |
否 |
否 |
车系名称 |
表 5-9 车辆信息表
(8)T_Appointment预约表
titleid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
appointmentid |
INT |
是 |
是 |
预约id |
2 |
appointmenttypeid |
INT |
否 |
是 |
预约类型 |
3 |
appointmentname |
VARCHAR |
否 |
否 |
预约名称 |
4 |
appointmenttime |
DATETIME |
否 |
否 |
预约时间 |
5 |
customerid |
INT |
否 |
否 |
预约客户id |
6 |
state |
BIT |
否 |
否 |
预约状态 |
7 |
customercreatetime |
DATETIME |
否 |
否 |
预约创建时间 |
8 |
remark |
VARCHAR |
否 |
否 |
备注 |
表 5-10 预约表
(9)T_User员工表表
userid为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
userid |
INT |
是 |
是 |
员工账号 |
2 |
userpassword |
INT |
否 |
是 |
员工密码 |
3 |
usertel |
VARCHAR |
否 |
否 |
员工电话 |
4 |
gender |
VARCHAR |
否 |
否 |
性别 |
5 |
realname |
VARCHAR |
否 |
否 |
真实姓名 |
6 |
state |
BIT |
否 |
否 |
状态 |
7 |
usercreatetime |
DATETIME |
否 |
否 |
创建时间 |
8 |
photoid |
INT |
|
|
员工照片 |
表 5-11 员工表
(10)T_Role后台管理员角色表
id为主键约束
序号 |
字段名 |
数据类型 |
主键 |
非空 |
描述 |
1 |
id |
INT IDENTITY |
是 |
是 |
角色编号 |
2 |
name |
NVARCHAR(30) |
否 |
是 |
角色名称 |
3 |
description |
NVARCHAR(300) |
否 |
否 |
描述 |
4 |
deepth |
INT |
否 |
否 |
深度 |
5 |
parentid |
INT |
否 |
否 |
父id |
6 |
status |
VARCHAR(10) |
否 |
否 |
启用状态 |
表 5-12 管理员角色表
(1) V_User后台管理员视图
查询员工信息
序号 |
字段名 |
描述 |
1 |
userid |
员工账号 |
2 |
userpassword |
员工密码 |
3 |
usertel |
员工电话 |
4 |
gender |
性别 |
5 |
realname |
真实姓名 |
6 |
state |
状态 |
7 |
usercreatetime |
创建时间 |
8 |
photoid |
员工照片 |
9 |
path |
员工照片路径 |
表 5-13 员工信息视图
(2) V_Car 车辆视图
查询车辆信息
序号 |
字段名 |
描述 |
1 |
carid |
车辆id |
2 |
series |
车系 |
3 |
guideprice |
厂商指导价 |
4 |
brandid |
品牌 |
5 |
manufacturer |
厂商 |
6 |
licenseplatenumber |
销售状态 |
7 |
engine number |
上市时间 |
8 |
cartypeid |
车辆类型 |
9 |
photoid |
照片 |
10 |
state |
状态 |
11 |
carname |
车系名称 |
表 5-14 车辆信息视图
(3) V_Appointment预约视图 查询预约信息
序号 |
字段名 |
描述 |
1 |
appointmentid |
用户id |
2 |
appointmenttypeid |
电话 |
3 |
appointmentname |
密码 |
4 |
appointmenttime |
角色id |
5 |
customerid |
用户状态 |
6 |
state |
真实姓名 |
7 |
customercreatetime |
创建时间 |
8 |
remark |
登陆状态 |
9 |
Customername |
客户名称 |
10 |
tel |
客户电话 |
11 |
agend |
客户性别 |
表 5-15 后台管理员视图
系统业务接口设计如下表所示,表中需要实现的方法之例举了部分,在接口说明中需要实现的方法会详细说明。
接口名称 |
接口说明 |
需要实现的方法 |
CustomerDAO |
客户处理业务接口 |
addTCustomer ():添加客户方法,用来提供游客注册,成功后返回客户账号。 delTCustomer():根据客户id删除客户账号,返回成功或失败。 updateTCustomer():传入客户实体,更新客户信息,返回成功或失败 getTCustomerByid():根据客户账号查询客户所有信息 |
ArticlesDAO |
文章处理业务接口 |
addTArticles ():添加文章方法,传入文章实体,添加成功后返回文章id。 delTArticles():根据文章id删除文章,返回成功或失败。 updateTArticles():传入文章实体数据,更新文章信息,返回成功或失败 getTArticlesByid():根据根据问章id获取文章信息 |
AppointmentDAO |
预约单业务处理接口 |
addTAppointment ():添加预约单方法,添加成功后返回预约单id delTAppointment():根据预约单id删除预约单,返回成功或失败。 updateTAppointment():传入预约单实体,更新预约信息,返回成功或失败 getTAppointmentByid():根据预约单id获取所有信息 |
表 5-16 网站端接口设计与说明
接口名称 |
接口说明 |
需要实现的方法 |
UserDAO |
员工管理业务接口 |
addTUser ():添加员工方法,添加成功后返回员工账号 delTUser():根据员工账号删除员工,返回成功或失败。 updateTUser():传入员工实体,更新员工信息,返回成功或失败 getTUserByid():根据员工账号获取员工信息 getTUserByPage():根据条件查询员工分页信息 |
UserTypeDAO |
员工类型管理业务接口 |
addTUserType ():添加员工类型方法,添加成功后返回员工类型id delTUserType():根据员工类型id删除员工类型,返回成功或失败。 updateTUserType():传入员工类型实体,更新员工类型信息,返回成功或失败 getTUserTypeByid():根据员工类型id获取员工类型信息 getUserTypeByPage():根据条件查询员工类型分页信息 |
SystemLogDAO |
系统日志业务类接口 |
getaAllSystemList ():获取所有日志信息方法 getSystemLogList():根据条件获取日志分页数据 deleteLogById():根据日志id删除单一日志 deleteLogById():根据日志id数组,实现批量删除日志 addLog():传入日志实体,添加日志,返回日志id getLogById():根据日志id获取日志信息 |
RoleDAO |
角色管理业务类接口 |
addTRole ():添加角色方法,添加成功后返回角色id delTRole():根据角色id删除角色记录,返回成功或失败。 updateTRole():传入角色实体,更新角色信息,返回成功或失败 getTRoleByid():根据角色id获取角色信息 getTRoleByPage():根据条件查询角色分页信息 |
PhotoDAO |
网站图片管理业务类接口 |
addTPhoto ():添加图片方法,添加成功后返回图片id delTPhoto():根据图片id删除图片记录,返回成功或失败。 updateTPhoto():传入图片实体,更新图片信息,返回成功或失败 getTPhotoByid():根据图片id获取图片信息 getTPhotoByPage():根据条件查询图片分页信息 getTPhotoList():获取所有图片方法 |
CarDAO |
车辆管理业务类接口 |
addCar ():添加车辆方法,添加成功后返回车辆id delCar():根据车辆id删除车辆记录,返回成功或失败。 updateCar():传入车辆实体,更新车辆信息,返回成功或失败 getCarByid():根据车辆id获取车辆信息 getCarByPage():根据条件查询车辆分页信息 getCarList():获取所有车辆方法 |
BrandDAO |
品牌管理业务类接口 |
addBrand ():添加品牌方法,添加成功后返回品牌id delBrand():根据品牌id删除品牌记录,返回成功或失败。 updateBrand():传入品牌实体,更新品牌信息,返回成功或失败 getBrandByid():根据品牌id获取品牌信息 getBrandByPage():根据条件查询品牌分页信息 getBrandList():获取所有品牌方法 |
ArticlesTypeDAO |
文章类型处理业务接口 |
addArticlesType ():添加文章类型方法,添加成功后返回文章类型id delArticlesType():根据文章类型id删除文章类型记录,返回成功或失败。 updateArticlesType():传入文章类型实体,更新文章类型信息,返回成功或失败 getArticlesTypeByid():根据文章类型id获取文章类型信息 getArticlesTypeByPage():根据条件查询文章类型分页信息 getArticlesTypeList():获取所有文章类型方法 |
表 5-17后台管理端接口设计与说明
后端交互动作接口设计如下表所示(只列出了部分)。
类名:CarController |
||
方法名称:getCarList |
||
说明:分页获取车辆信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
car/ getcar |
Page:当前页数 Limit:每页数量 Condition:查询条件 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,data:carlist,msg:“查询成功”} |
{ code:1,msg:“查询失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/car/getcar?page=1&limit=10 |
|
方法名称:addCar |
||
说明:实现一个车辆的添加 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
car/ addcar |
photoid: 车辆图片id carname: 车辆名称 carseries: 车系 brandid: 车辆品牌id cartypeid: 车辆类型id manufacturer: 厂商 markettime: 上市时间 guideprice: 厂家指导价 carstate: 是否热销 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“添加成功”} |
{ code:1,msg:“添加失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/car/addcar |
|
方法名称:delCar |
||
说明:删除车辆信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
car/ delcar |
Carid:车辆id |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“删除成功”} |
{ code:1,msg:“删除失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/car/delcar?carid=1 |
|
方法名称:updateCar |
||
说明:更新车辆信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
car/ updatecar |
photoid: 车辆图片id carname: 车辆名称 carseries: 车系 brandid: 车辆品牌id cartypeid: 车辆类型id manufacturer: 厂商 markettime: 上市时间 guideprice: 厂家指导价 carstate: 是否热销 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“更新成功”} |
{ code:1,msg:“更新失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/car/updatecar |
|
类名:CustomerController |
||
方法名称:getCustomList |
||
说明:获取客户信息列表 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
customer/ getcustomer |
Page:当前页数 Limit:每页数量 Condition:查询条件 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,data:customerlist,msg:“查询成功”} |
{ code:1,msg:“查询失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/customer/getcustomer?page=1&limit=10 |
|
方法名称:addCustomer |
||
说明:实现客户的注册 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
customer/ addcustomer |
Tcustomer:客户实体类信息 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“添加成功”} |
{ code:1,msg:“添加失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/customer/ addcustomer |
|
方法名称:delcustomer |
||
说明:删除客户信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
customer/ delcustomer |
customerid:客户id |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“删除成功”} |
{ code:1,msg:“删除失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/customer/delcustomer?customerid=1 |
|
方法名称:updateCustomer |
||
说明:更新客户信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
customer/ updatecustomer |
TCustomer:客户实体类信息 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“更新成功”} |
{ code:1,msg:“更新失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/customer/updatecustomer |
|
方法名称:customerLogin |
||
说明:实现客户登录 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
customer/ customerlogin |
Customeraccount:客户账户 Customerpassword:客户密码 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“登录成功”} |
{ code:1,msg:“登录失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/customer/customerlogin?Customeraccount=user001& Customerpassword=123456 |
|
类名:AppointmenController |
||
方法名称:getAllAppList |
||
说明:分页获取预约单信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
appointment/getallappointment |
Page:当前页数 Limit:每页数量 Condition:查询条件 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,data: AppList,msg:“查询成功”} |
{ code:1,msg:“查询失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/appointment/getallappointment?page=1&limit=10 |
|
方法名称:addappointment |
||
说明:实现一个预约单的添加 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
appointment / addappointment |
Tappointment:预约单实体信息 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“添加成功”} |
{ code:1,msg:“添加失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/appointment/addappointment |
|
方法名称:delappointment |
||
说明:删除预约单信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
appointment/ delappointment |
appointmentid:预约单id |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“删除成功”} |
{ code:1,msg:“删除失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/appointment/delappointment?appointmentid=1 |
|
方法名称:updateAppointment |
||
说明:更新预约单信息 |
||
http的url请求及参数声明 |
请求url地址 |
请求参数 |
appointment/ updateappointment |
TAppointment:预约单信息实体 |
|
返回值 |
成功JSON |
失败 JSON |
{code:0,msg:“更新成功”} |
{ code:1,msg:“更新失败”} |
|
案例 |
http://localhost:8080/RepairCusAdminMS/appointment/updateappointment |
表 5-18 网站端接口设计与说明
后台管理端采用Spring MVC的架构模式,以请求为驱动,通过模型对象,分派器来展示请求结果视图。需要定义一个控制类接口,声名访问接口。在前台,通过ajax直接访问接口,传递对应参数,就能完成对数据的增删改查操作。
由于控制类较多,下面值列举其中一个。
ArticlesController(用户处理控制类)
类名 |
说明 |
需要传入的参数 |
addArticles |
添加文章 |
Articles |
updateArticles |
更新文章 |
ArticlesId Articles |
getArticlesByid |
根据id查询文章信息 |
Articlesid |
delArticlesByid |
根据id删除文章 |
Articlesid |
getArticlesByOP |
获取文章分页信息 |
Op limite,page |
getAllArticles |
得到所有的文章信息 (不带分页) |
|
getAllArticlesType |
得到所有的文章信息类型(不带分页) |
|
addArticlesType |
将一条文章类型添加到数据库 |
title、typename、 |
delArticlesType |
根据文章id删除文章 |
ArticlesTypeid |
updateArticlesType |
修改文章类型 |
ArticlesType |
getArticlesTypeList |
根据条件文章类型分页 |
title、page、limit |
getArticlesContentByid |
根据文章id获取文章内容 |
Articlesid |
getArticlescontentByOP |
根据条件得到文章内容 |
op、page、limit |
addArticlesContent |
添加一条文章内容 |
ArticlesContent |
delArticlesContent |
根据传入文章内容id删除文章内容 |
ArticlesContentid |
表 5-19 网站端接口设计与说明