1. 项目文件结构
1.1. 后端代码
1.1.1. 基本包名由组织(公司)名+项目名构成,如:cn.hp.crm
1.1.2. 模型包名:cn.hp.crm.model
1.1.3. 数据访问层:cn.hp.crm.dao/dao.impl
1.1.4. 服务层:cn.hp.crm.service/service.impl
1.1.5. 控制器(Servlet)层:cn.hp.crm.servlet.模块
1.1.6. 过滤器:cn.hp.crm.filter
1.1.7. 工具类:cn.hp.crm.util
1.1.8. 每个模块选择一个最贴切且简洁的英语单词作为基本名字,从模型到数据层到控制
层等各层都使用这个名字。如:
用户:user
通知公告:notice
部门:department
角色:role
客户:customer
1.1.9. 可以推导出来,model/dao/dao.impl /service/service.impl 的名字分别是
Notice
NoticeDao
NoticeDaoImpl
NoticeService
NoticeServiceImpl
1.1.10. Servlet 控制层的命名采用动词+Servlet 后缀的方式,统一为这种方式有利于今后抽
象出共同的父类,如
AddServlet 添加
ListServlet 列表
DetailServlet 详情
UpdateServlet 更新
RemoveServlet 删除
URL 统一设计为/模块名/动词,如上的 Servlet 对应分别是:
/notice/add
/notice/list
/notice/detail
/notice/update
/notice/remove
1.1.11. 公用父类、数据库连接、分页、SessionKey 统一定义都放在 util 中
1.2. 静态资源和视图
1.2.1. 静态资源放在 web 目录中,分别是:
css 样式表
image 图片
js 项目组编写的 JS 脚本
WEB-INF
lib 第三方库
1.2.2. 视图分模块放在 WEB-INF/view 中,命名上采用动词,如通知公告模块:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0b9a26cb71d86f5ae80efdcf45bc60ab.png)
2. Java 命名规范
2.1. 模型类实现 Serializable 序列化接口 序列化 反序列化
2.2. 实例变量使用驼峰命名法,数据库字段使用_时,将之改为驼峰命名法,如:
数据库中 create_time 类中 createTime
2.3. 使用 idea 提供的功能封装实例变量,接受 idea 的命名习惯
2.4. 使用动词作为方法名,如 NoticeDao:
total() 返回数据总数
list() 返回列表数据
getById() 通过 Id 获取公告
add() 添加
removeById() 删除
update() 更新
2.5. 日期时间使用 java.sql.Timestamp 类
2.6. 重写 toString 方法方便打印日志查看类中的数据
2.7. 重写方法使用@Override
2.8. Dao 接口中的方法名使用统一的词汇
total() 获取数据总数
list() 获取数据或分页数据
getById() 通过 Id 获取单条数据
add() 添加数据
removeById() 通过 Id 删除单条数据
update() 更新单条数据
如果对数据模型的操作不是增删改查,则可以使用更贴切的词汇。如站内邮件模块。
send() 发送邮件 update
save() 保存草稿
2.9. 变量命名使用驼峰命名法,尽量使用完整的单词,除非简写比较普遍,大家一看都懂,
如:desc 表示 description
3. 数据库命名规范
3.1. 采用 MySQL 命名规范,特别强调以下几点:
主键 id 使用表名_id
status 数据状态,表示数据是否被逻辑删除,表示审核是否通过等
remark 备注,用户填写的备注信息,或者人为修改数据时记录的说明
create_time 创建时间
creater 创建人用户 Id
update_time 更新时间
updater 更新人用户 Id
日期时间使用 timestamp 类型
varchar 类型要设置合适的长度
status 等使用小范围数字的,设置为 tinyint 等 byte -128~127
4. 样式表命名规范
4.1. 本项目已经定义好主体样式表,最大的原则是不要在页面中写 style 行内样式,其次
是将页面中的内容分好类别,定义统一的样式表。如:
.box 内容容器
.btn 按扭
table.list 数据列表
.pager-info 分页信息
.pagination 分页页码
.form-table 包含表单的表格
.p80 用来控制表单中文本框的宽度
5. JSP 相关
5.1. 优先使用 JSTL 和 EL 表达式
5.2. 标签库的前缀使用大家常用的 c、fn、fmt 等
5.3. 引用 URL 时,注意使用<c:url>标签,以确保改变部署位置时生成正确的 URL
5.4. 图标统一使用 font-awesome 字体图标