为了账号安全,请及时绑定邮箱和手机立即绑定

JSP+Servlet培训班作业管理系统[11] -通用CRUD后端设计

标签:
Java Html/CSS

PS:本篇讲的是通用CRUD后端设计,主要是设计的想法,跟代码不相关,故可跳过本篇直接看下一篇代码实现。

在登录功能实现之后,猫哥定睛一看,剩下的好像绝大部分工作都是CRUD。也就是对一些事物的增、删、改、查。

比如人员管理功能,无非就是查看人员(查)、修改人员信息(改)、新增人员(增)、删除人员(删)。

而跟人员管理相关的网页,其实有两个就够额,一个是userManage.jsp,提供人员列表和相关的修改、删除、新增按钮。然后是userUpdate.jsp,提供修改人员、新增人员并保存的界面。

那么整个问题,从逻辑上就抽取成了两个问题,1个是页面跳转的问题,之前我们通过RouteCommand已经实现了,另一个就是增删改查的问题,需要我们接受页面参数之后判断页面请求的意图(是新增、还是删除),然后调用数据库层的接口完成操作,最后跳转到相应页面即可。

有一种很简单的做法,就是全部if判断,对每一种操作定义一个Servlet,然后执行相关数据库操作,然后跳转相应页面。

稍微复杂点的做法,就像我们之前的LoginServlet-LoginCommand 和 RouteServlet-RouteCommand一样,负责一部分的功能:登录、跳转。

那么即然CRUD的工作都是类似的,那么能不能交给同样的Servlet-Command模块处理呢,猫哥尝试之,并命名为ActionServlet-ActionCommand。

首先我们规范所有的跟CRUD请求相关的url写法为/HomeworkSystem/AcitonServlet?method=XXX&entity=YYY&id=ZZZ。具体规则如下:

XXX:view查看列表、add新增、edit修改、save保存、delete删除
YYY:操作实体的名字,如User、Role
ZZZ:相关实体的编号,如果没有可以不写,比如新增、查看列表的时候就没有

OK,我们设计所有CRUD请求的实现逻辑如下(以人员管理为例):

1,查看
点击人员管理菜单,显示人员列表和相应操作按钮,请求为:
/HomeworkSystem/AcitonServlet?method=view&entity=User
处理为:request的Attribute里面添加人员列表变量entityList
跳转网页为:userView.jsp,负责显示人员列表(注意所有跳转为内嵌跳转,跳转到的网页显示在index.jsp也右侧内容区域)
2,新增
点击新增,请求为:/HomeworkSystem/AcitonServlet?method=add&entity=User
处理为:无
跳转网页为:userUpdate.jsp
3,信息修改
点击修改,请求为:/HomeworkSystem/AcitonServlet?method=edit&entity=User&id=123
处理为:将id对应用户信息放入request的Atrribute,名为entityEdit
跳转网页为:userUpdate.jsp,需要加载待修改客户信息
4,保存新增/保存修改
点击保存,请求为:/HomeworkSystem/AcitonServlet?method=save&entity=User&id=123
处理为:判断id是否"",完成新增/修改的保存
跳转:直接调用1查看
5,删除
点击删除,请求为:/HomeworkSystem/AcitonServlet?method=delete&entity=User&id=123
处理为:删除id对应用户
跳转:直接调用1查看

OK,其实基本原则就一条,即然我们所有的实体对应的数据库表,都要完成CRUD操作,而且规则一致。根据计算机编程“避免重复”的原则,即可尝试简化之,如果在简化的过程中有问题,说明当初的设计就是有问题的,需要修改以便简化顺利完成。所以猫哥认为,大可不必为了设计而设计,修改不自然的设计是学习如何完善设计的好办法。

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
软件工程师
手记
粉丝
1.5万
获赞与收藏
1523

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消