Javaweb项目:超市管理系统

(1)实现技术:MySQL+jsp+servlet+tomcat+maven;是一个maven项目。
(2)MVC的三个部分全部自己手敲,没怎么抽取代码,看着可能冗余,大概这就是新手吧。
(3)功能基本实现了,只是前端页面的返回是history(-1),这个在多次使用后可能会导致页面白屏,暂时不太会处理。
(4)源码下载链接:smbms源码.zip
(5)在这篇文章中,只是项目的实现思路

分篇阅读:
smbms项目(一):项目开始阶段
smbms项目(二):用户管理页面
smbms项目(三):供应商管理页面
smbms项目(四):订单管理页面
smbms项目(五):项目小总结

smbms项目(一)

项目搭建
实现登录、登出、修改密码、跳转到用户管理页面

一、项目搭建准备工作

  1. 搭建一个maven web项目


  2. 配置tomcat


  3. 测试项目是否可以运行

  • 启动一下tomcat,确定是可以跑的
  1. 导入项目中需要的jar包
  
    
      javax.servlet
      servlet-api
      2.5
    
    
      javax.servlet.jsp
      javax.servlet.jsp-api
      2.3.3
    
    
      mysql
      mysql-connector-java
      5.1.47
    
    
    
      jstl
      jstl
      1.2
    
    
    
      taglibs
      standard
      1.1.2
    

  
  1. 创建项目包结构


  2. 编写实体类
  • ORM映射:表——类映射
  1. 编写基础公共类
  • 数据库配置文件 properties
    此文件注意不要乱加 ;
  • 数据库公共类
  • 编写字符编码过滤器
  1. 导入静态资源

二、登录功能实现

image
    1. 编写前端页面
    1. 设置欢迎页面
    1. 编写dao层登录用户登录的接口
    1. 编写dao接口的实现类
  • 5.业务层接口
    1. 实现业务层接口
    1. 编写Servlet
    1. 配置Servlet
    1. 测试功能是否全部实现

三、登录功能优化

(一)注销功能

- 思路:移除Session,返回登录页面
  • 1.1. servlet
  • 1.2. 配置xml

(二)登录拦截优化

  • 2.1. servlet
  • 2.2. 配置xml

四、密码修改

    1. 导入前端素材
    1. 写项目,从底层往上写
  • 从dao层开始写起,再写业务层service,再写控制层servlet,再和视图层jsp作联系。要思考好一个事务和数据库的逻辑关系,分别实现不同层次的代码。
    1. UserDao接口
    1. UserDao接口实现类
    1. UserService接口
    1. UserService实现
    1. 编写Servlet
  • json工具包导入
    1. 配置xml

五、用户管理实现

  • 思路:
    image
  • 导入分页的工具类
  • 用户列表页面导入

(一)获取用户数量

  • 1.1. UserDao
  • 1.2. UserDaoImpl
  • 1.3. Service
  • 1.4. ServiceImpl

(二)获得用户列表

  • 2.1. UserDao
  • 2.2. UserDaoImpl
  • 2.3. Service
  • 2.4. ServiceImpl

(三)获得角色列表

为了职责分明清晰,可以把角色的操作单独放到一个包中,和pojo一一对应

  • 3.1. RoleDao
  • 3.2. RoleDaoImpl
  • 3.3. RoleService
  • 3.4. RoleServiceImpl
  • 3.5. Servlet
    • 3.5.1. 查询获得用户列表
    • 3.5.2. 从前端获取数据
    • 3.5.3. 获得用户的总数(分页:上一页、下一页的情况)
    • 3.5.4. 控制首页和尾页,如果页面要小于1,就显示第一页的东西
    • 3.5.5. 获取用户列表展示
    • 3.5.6. 返回前端

smbms项目(二)用户管理页面

一、根据用户id查询用户信息(用户管理的查看操作)

    1. UserDao
    1. UserDaoImpl
    1. UserService
    1. UserServiceImpl
    1. Servlet
    1. xml

二、根据用户id修改用户信息(用户管理的修改操作)

(一)修改页面的跳转

  • 1.1. servlet
  • 1.2. xml

(二)得到角色列表

  • 2.1. servlet
  • 2.2. xml

(三)提交更改用户信息,表单提交

  • 3.1. UserDao
  • 3.2. UserDaoImpl
  • 3.3. UserService
  • 3.4. UserServiceImpl
  • 3.5. Servlet
  • 3.6. xml

三、添加用户

(一)获得用户全部角色

和上面所用的方法一样

(二)获得全部用户的userCode并判断用户想要新建用户的userCode是否能使用

  • 2.1. UserDao
  • 2.2. UserDaoImpl
  • 2.3. UserService
  • 2.4. UserServiceImpl
  • 2.5. UserServlet
  • 2.6. xml

(三)提交新用户信息,存储在数据库

  • 3.1. UserDao
  • 3.2. UserDaoImpl
  • 3.3. UserService
  • 3.4. UserServiceImpl
  • 3.5. UserServlet
    • 问题分析:因为前端提交表单有属性:enctype="multipart/form-data"
    • enctype="multipart/form-data"时文本框参数获取问题的解决
      - 使用文件的方式读取资源,新增一个AddUserServlet的类,处理该特殊请求
      - 前端页面,跳转到添加用户的是通过超链接实现,所以放到doGet方法中,表单提交(post)处理就使用post方法
      - 路径问题:this.getServletContext().getRealPath("/")获得null,查找一番没解决,便写死了项目在硬盘上的地址(没有解决的bug)

  • 3.6. xml
  • 3.7. bug:文件的路径获取失败:
    • request.getSession().getServletContext().getRealPath("/statics/images");
    • this.getServletContext().getRealPath("/") + "/statics/tmp";

四、删除用户

  • 4.1. UserDao
  • 4.2. UserDaoImpl
  • 4.3. UserService
  • 4.4. UserServiceImpl
  • 4.5. UserServlet
  • 4.6. xml

smbms项目(三)供应商管理页面

  • 页面跳转
  • ProviderServlet
  • web.xml

(一)、供应商管理页面

1、根据供应商编码或者供应商名称查询供应商总数

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl

2、通过条件查询获得供应商列表

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl
  • ProviderServlet

(二)、供应商查看页面

根据供应商id查询供应商信息,供应商管理页面 下的 查看请求

  • ProviderDao--> ProviderDaoImpl--> ProviderService--> ProviderServiceImpl--> ProviderServlet--> web.xml

(三)、供应商修改页面

1. 页面跳转

根据供应商id 获取供应商信息,并返回前端,这和查看供应商信息的功能一样,只是跳转的页面不一样,只要修改Servlet就行

  • ProviderServlet

2. 修改供应商信息

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl
  • ProviderServlet
  • web.xml

(四)、供应商添加页面

1. 添加页面跳转

  • 1.1 ProviderServlet
  • 1.2 web.xml

2. 查询供货商编码

查询全部的供货商编码(dao)
确定供货商编码是否未被使用、给前端设置数据(Servlet)

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl
  • ProviderServlet
  • web.xml

3. 添加用户

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl
  • ProviderServlet
  • web.xml

(五)、删除供应商

  • ProviderDao
  • ProviderDaoImpl
  • ProviderService
  • ProviderServiceImpl
  • ProviderServlet
  • web.xml

至此完成了供应商管理页面的全部功能

smbms项目(四)订单管理页面

  • 页面跳转
  • BillServlet
  • web.xml

(一)、订单管理页面

1、全部供应商列表

  • BillServlet

2、根据商品名称、供应商id、是否付款的标识查询获得订单总数

  • BillDao
  • BillDaoImpl
  • BillService
  • BillServiceImpl

3、根据商品名称、供应商id、是否付款的标识查询获得供应商列表

关于get方式提交中文乱码问题的解决方式

  • BillDao
  • BillDaoImpl
  • BillService
  • BillServiceImpl
  • BillServlet

(二)、订单信息查看页面

不得不记录一个人为bug:ProviderServlet,一开始将下面的配置语句写成了上面那句,所以请求处理一直没有正确的处理,即是拿到了前端数据,但是没有交由正确的程序处理,是不行的!

  • web.xml
  • BillDao
  • BillDaoImpl
  • BillService
  • BillServiceImpl
  • BillServlet

(三)、订单信息修改页面

1. 页面跳转

根据订单id 获取订单信息,并返回前端,这和查看订单信息的功能一样,只是跳转的页面不一样,只要修改Servlet就行

  • BillServlet

2. 获得供货商编码列表,返回前端json数组

订单信息修改页面下的 获得供应商 列表 异步请求,无页面跳转

  • BillServlet

3. 订单信息修改页面下的 修改保存提交请求

  • java中的BigDecimal和String的相互转换

  • BillDao

  • BillDaoImpl

  • BillService

  • BillServiceImpl

  • BillServlet

  • web.xml

(四)、订单信息添加页面

1. 跳转到添加订单信息页面

  • BillServlet
  • web.xml

2. 获得供货商编码列表,返回前端json数组

订单信息添加页面下的 获得供应商 列表 异步请求,无页面跳转,这里和上面的一样

3. 订单信息提交,并保存到数据库

  • BillDao
  • BillDaoImpl
  • BillService
  • BillServiceImpl
  • BillServlet
  • web.xml

(五)、删除订单信息

  • BillDao
  • BillDaoImpl
  • BillService
  • BillServiceImpl
  • BillServle
  • web.xml

至此完成了订单管理页面的全部功能,以下是BillServlet的doGet方法

你可能感兴趣的:(Javaweb项目:超市管理系统)