当前位置: 首页>后端>正文

商城项目总结

实施步骤:

1. 项目简要分析和设计

  1. 分析项目中各模块功能,例如用户模块、商品模块等。
  2. 采用常用的MVC模式构建项目

2. 设计数据库实体关系

商城项目总结,第1张
部分实体间的关系

图中未给出的实体还有

  • 购物车Cart
  • 购物车项CartItem
    一个Session中对应一个购物车Cart,一个购物车Cart含有多个购物车项CartItem

我并未对这两项设计数据库表,因为购物车项CartItem字段和订单项OrderItem类似,并且由于登录机制设置,本商城不需要登录也可使用购物车,所以购物车是和Session绑定的,用户将商品加到购物车,即在session中创建购物车并加商品。

3. 准备工作

  1. 配置Java 运行环境
  2. 安装Eclipse,设置好编码
  3. 安装配置Mysql数据库
  4. 导入需要各种的工具包,编写各种配置文件。

4. 编码之前

  1. 寸琪琪和曹泽慧负责编写前端页面,根据预先设想的功能,例如:首页、用户登录、注册等,先编写出静态的html页面,后期再调整布局、样式。
  2. 我主要负责后台代码的编写。
  3. 为了更好的合作,我们小组约定,前端页面自由发挥就行。只需要注意交互数据的地方,例如表单中输入框的name属性和后端Java Bean属性命名一致。这样可以分工合作提高效率,不会出现前后端互相等待对方工作的情况。

5. 开始编码

商城web项目虽然听上去很普遍,但手动实现起来代码量还是很大。
而且因为时间问题,我没来得及学完框架,基本上整个项目全用的底层技术手写实现的功能。

项目结构:

虽然没有用MVC框架,但是借鉴了一下MVC的编程思想来设计项目结构。


商城项目总结,第2张
项目结构

如包名所示,主要分为dao层、web层、service层。
为了减少耦合,dao包和service包只定义了接口,实现类放在子目录impl中。


商城项目总结,第3张
草稿纸.png

通用Servlet的设计:

思想:编写父类BaseServlet并重写Service方法,接受method参数,返回请求转发路径。
作用:使得web层根据请求路径来选择调用相应的子类Servlet,这样可有效减少Servlet的个数,结构清晰。
例如:注册用户后,在数据库中添加该用户。点击注册提交按钮,发送请求到路径 “项目名/user?method=add” 。
BaseServlet会调用子类UserServlet中的add方法,来调用该功能。
在开发中,也只需要在对应的Servlet中编写相关方法,并按照以上规则配置路径。本项目中,各请求路径都按照此规则编写,并按照此方法编写web层代码。

工厂模式:

思想:通过配置文件+工具类的方式创建实例对象,减少接口和实现类的耦合。
作用:更换实现类时,只需要修改配置文件即可。
例如:这里以商品模块Product举例

// 原本创建实例时,需要每次都new出来
ProductService ps = new ProductServiceImpl();
ProductDao pd = new ProductDaoImpl();

可是项目中,每个功能至少需要调用一次service、一次dao,甚至更多。
如果实现类更换了,则需要在每个创建实例的地方修改,工作量巨大。
所以根据工厂模式的思想:

// 1. 首先编写配置文件:
<beans>
    <bean id="ProductService" class="com.itheima.service.impl.ProductServiceImpl"></bean>
    <bean id="ProductDao" class="com.itheima.dao.impl.ProductDaoImpl"></bean>
 <beans>
// 2. 创建对象时,调用工具类
ProductService ps = BeanFactory.getBean("ProductService");

这样一来,如果后期项目重构,只需要修改配置文件中的实例路径就行了。不需要对代码进行任何修改。
采用工厂模式本来是想着后期学会了框架,对代码进行重构时会很方便,结果我并没来得及学完框架,但工厂模式的思想依然很有用。

ehcache缓存框架

思想:访问页面时,将局部放入缓存中,用户下次访问直接从缓存中用,减少服务器压力。
例如:页面顶部导航栏,在第一次访问时会请求数据库,查找到最新的分类信息,展示到页面上,这里使用缓存可减少数据库请求次数。

模块功能的实现:

前面已经将项目中比较重要的设计模式说了,按照开发规范,功能实现的编码就简单很多了。这里我不贴代码,因为每个功能的实现代码量都不少,具体可在源码中查看。但是每个功能都采用MVC的思想,所以并不复杂。


https://www.xamrdz.com/backend/3xm1942685.html

相关文章: