MVC—商品管理系统 | 无框架 | web新手

自从我爸知道我在学Web之后,就想让我给他做一个记账用的东西,奈何我当时才刚刚起步没有头绪,终于在前几天立下flag后痛定思痛,着手开始写一下这个简单的案例。


思路

首先整理项目需求:一个系统,可以记录商品的售价、进价、数量、名称、分类、备注,还可以进行对分类、商品的添加、编辑与删除,需要根据不同的分类显示不同分类下的商品,需要通过多种查询方式来查询商品。

这是没有开始的时候我爸的需求,所以就先这样写出来。可以肯定的是我们只需要针对管理员操作就可以了,这就是一个私人的后台,至于前端什么的暂时还不太需要。

所以我们首先建立结构:DAO层处理数据库操作、service层连接DAO层与servlet层、servlet层与jsp进行交互、jsp作为页面进行展示、同时还有一个domain层用来连接数据库与jsp中需要的数据属性。

结构架好之后开始考虑需要什么数据:进行操作需要管理者的信息,所以对于Admin需要一套上述架构;被操作的商品goods也需要有一套架构;而分类types需要和商品进行交互,也需要一套架构;至于为了美观性所以进行基础的分页处理,对于分页所需要的信息也要有一套架构(实际上分页只有一个domain层,因为其他层都在goods中操作了)

对于展示层我使用了BootStrap3.3.7来操作,毕竟手写页面真的很痛苦,大家可以看一下我之前一篇刚学完html、css、js之后就急匆匆的写的静态页面:紫薇星“Jigsaw Puzzle”,现在看来还是too young too simple,具体使用一个页面来进行转发或重定向来进行admin的操作,比如跳转到查找页面、添加页面、商品显示页面等、而内容的展示和提交都交给goods和types来操作。

实际操作

对于DAO,建立了DAO接口,使用配置文件和DaoFactory类来实现不同的架构使用不同的Dao对象;

对于Servlet,因为servlet中主要是doGet()和doPost()方法,但其实本质上还是service()方法,所以建立一个BaseServlet类来处理参数,只要在调用方法的时候添加参数method=xxx,就会自动执行xxx方法,这样减少了servlet的数量没但并不加强耦合,向高内聚低耦合的方向靠拢;

对于数据库,使用QueryRunner来操作,使用c3p0来进行connection对象的分配,改进QueryRunner类为TxQueryRunnner类,主要操作为将所有需要connection对象的方法全部在Tx类内部处理,防止connection对象配置错误;

对于前端,index主页面使用两个iframe兄弟进行显示,以达到“分类”和“根据分类显示商品”的功能。

遇到的问题以及解决的方法

问题一:BootStrap中组件不能正常使用?

解决方法:检查BootStrap版本以及对应的文件导入是否正确。

问题二:如何做到点击当前iframe页面中的分类按钮,在另一个iframe页面中实时显示对应的数据?

解决方法:首先通过按钮提交传递当前按钮包含的分类信息数据,然后为按钮添加点击事件,使其点击后刷新另一个需要显示数据的iframe页面,同时此iframe页面会在每次调用时先访问Servlet,在servlet中获取数据信息后,进行处理后转发到显示页面的jsp中。

问题三:不同的添加选项(添加商品、添加分类),不同的显示选项(直接显示全部、根据分类显示、根据搜索显示、编辑后显示、删除后显示),如果每个都单独写一个页面,非常繁琐,如何用一个页面处理?

解决方法:在不同的事件被触发时提交不同的参数,使用不同的参数处理后保存信息到session域中,在jsp页面中使用jstl表达式根据session域中的信息来进行不同的处理。

最终结果

最终完成的项目是一个很简单的商品管理系统,实现基础的CRUD以及一些变种的CRUD没有问题,等到前端页面也写好后,管理系统中一些手动编辑的数据就要相应的修改为自动变化,并且应该配有日志管理以及数据导出功能,当然这些都没有实现,只是一个方向,有时间会继续修改。


最后附上GitHub链接,有需要的同学可以自行获取:https://github.com/zijundidu/Simple-management-system.git

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值