• smdms超市订单管理系统之登录功能


    一、超市订单管理系统准备阶段

    • Supermarket order management system
    1. 创建数据库

    2. 数据库代码放置如下

    点击查看数据库address代码
    CREATE TABLE `smbms_address` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
      `contact` varchar(15) DEFAULT NULL COMMENT '联系人姓名',
      `addressDesc` varchar(50) DEFAULT NULL COMMENT '收货地址',
      `postCode` varchar(15) DEFAULT NULL COMMENT '邮编',
      `tel` int(20) DEFAULT NULL COMMENT '联系人电话',
      `createdBy` varchar(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '修改者',
      `modifyDate` datetime DEFAULT NULL COMMENT '修改时间',
      `userId` bigint(20) DEFAULT NULL COMMENT '用户ID',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `smbms_address` VALUES (1, '王丽', '北京市东城区东交民巷44号', '100010', '13678789999', 1, '2016-04-13 00:00:00', NULL, NULL, 1);
    INSERT INTO `smbms_address` VALUES (2, '张红丽', '北京市海淀区丹棱街3号', '100000', '18567672312', 1, '2016-04-13 00:00:00', NULL, NULL, 1);
    INSERT INTO `smbms_address` VALUES (3, '任志强', '北京市东城区美术馆后街23号', '100021', '13387906742', 1, '2016-04-13 00:00:00', NULL, NULL, 1);
    INSERT INTO `smbms_address` VALUES (4, '曹颖', '北京市朝阳区朝阳门南大街14号', '100053', '13568902323', 1, '2016-04-13 00:00:00', NULL, NULL, 2);
    INSERT INTO `smbms_address` VALUES (5, '李慧', '北京市西城区三里河路南三巷3号', '100032', '18032356666', 1, '2016-04-13 00:00:00', NULL, NULL, 3);
    INSERT INTO `smbms_address` VALUES (6, '王国强', '北京市顺义区高丽营镇金马工业区18号', '100061', '13787882222', 1, '2016-04-13 00:00:00', NULL, NULL, 3);
    
    点击查看数据库bill代码
    CREATE TABLE `smbms_bill` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `billCode` varchar(30) DEFAULT NULL COMMENT '账单编码',
      `productName` varchar(20) DEFAULT NULL COMMENT '商品名称',
      `productDesc` varchar(50) DEFAULT NULL COMMENT '商品描述',
      `productUnit` varchar(60) DEFAULT NULL COMMENT '商品单位',
      `productCount` decimal(20,2) DEFAULT NULL COMMENT '商品数量',
      `totalPrice` decimal(20,2) DEFAULT NULL COMMENT '总金额',
      `isPayment` int(10) DEFAULT NULL COMMENT '是否支付',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      `providerId` int(10) DEFAULT NULL COMMENT '提供者id',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `smbms_bill` VALUES (2, 'BILL2016_002', '香皂、肥皂、药皂', '日用品-皂类', '块', 1000.00, 10000.00, 2, 1, '2016-03-23 04:20:40', NULL, NULL, 13);
    INSERT INTO `smbms_bill` VALUES (3, 'BILL2016_003', '大豆油', '食品-食用油', '斤', 300.00, 5890.00, 2, 1, '2014-12-14 13:02:03', NULL, NULL, 6);
    INSERT INTO `smbms_bill` VALUES (4, 'BILL2016_004', '橄榄油', '食品-进口食用油', '斤', 200.00, 9800.00, 2, 1, '2013-10-10 03:12:13', NULL, NULL, 7);
    INSERT INTO `smbms_bill` VALUES (5, 'BILL2016_005', '洗洁精', '日用品-厨房清洁', '瓶', 500.00, 7000.00, 2, 1, '2014-12-14 13:02:03', NULL, NULL, 9);
    INSERT INTO `smbms_bill` VALUES (6, 'BILL2016_006', '美国大杏仁', '食品-坚果', '袋', 300.00, 5000.00, 2, 1, '2016-04-14 06:08:09', NULL, NULL, 4);
    INSERT INTO `smbms_bill` VALUES (7, 'BILL2016_007', '沐浴液、精油', '日用品-沐浴类', '瓶', 500.00, 23000.00, 1, 1, '2016-07-22 10:10:22', NULL, NULL, 14);
    INSERT INTO `smbms_bill` VALUES (8, 'BILL2016_008', '不锈钢盘碗', '日用品-厨房用具', '个', 600.00, 6000.00, 2, 1, '2016-04-14 05:12:13', NULL, NULL, 14);
    INSERT INTO `smbms_bill` VALUES (9, 'BILL2016_009', '塑料杯', '日用品-杯子', '个', 350.00, 1750.00, 2, 1, '2016-02-04 11:40:20', NULL, NULL, 14);
    INSERT INTO `smbms_bill` VALUES (10, 'BILL2016_010', '豆瓣酱', '食品-调料', '瓶', 200.00, 2000.00, 2, 1, '2013-10-29 05:07:03', NULL, NULL, 8);
    INSERT INTO `smbms_bill` VALUES (11, 'BILL2016_011', '海之蓝', '饮料-国酒', '瓶', 50.00, 10000.00, 1, 1, '2016-04-14 16:16:00', NULL, NULL, 1);
    INSERT INTO `smbms_bill` VALUES (12, 'BILL2016_012', '芝华士', '饮料-洋酒', '瓶', 20.00, 6000.00, 1, 1, '2016-09-09 17:00:00', NULL, NULL, 1);
    INSERT INTO `smbms_bill` VALUES (13, 'BILL2016_013', '长城红葡萄酒', '饮料-红酒', '瓶', 60.00, 800.00, 2, 1, '2016-11-14 15:23:00', NULL, NULL, 1);
    INSERT INTO `smbms_bill` VALUES (14, 'BILL2016_014', '泰国香米', '食品-大米', '斤', 400.00, 5000.00, 2, 1, '2016-10-09 15:20:00', NULL, NULL, 3);
    INSERT INTO `smbms_bill` VALUES (15, 'BILL2016_015', '东北大米', '食品-大米', '斤', 600.00, 4000.00, 2, 1, '2016-11-14 14:00:00', NULL, NULL, 3);
    INSERT INTO `smbms_bill` VALUES (16, 'BILL2016_016', '可口可乐', '饮料', '瓶', 2000.00, 6000.00, 2, 1, '2012-03-27 13:03:01', NULL, NULL, 2);
    INSERT INTO `smbms_bill` VALUES (17, 'BILL2016_017', '脉动', '饮料', '瓶', 1500.00, 4500.00, 2, 1, '2016-05-10 12:00:00', NULL, NULL, 2);
    INSERT INTO `smbms_bill` VALUES (18, 'BILL2016_018', '哇哈哈', '饮料', '瓶', 2000.00, 4000.00, 2, 1, '2015-11-24 15:12:03', NULL, NULL, 2);
    
    点击查看数据库provider代码
    CREATE TABLE `smbms_provider` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `proCode` varchar(15) DEFAULT NULL COMMENT '供应商编码',
      `proName` varchar(15) DEFAULT NULL COMMENT '供应商名称',
      `proDesc` varchar(50) DEFAULT NULL COMMENT '供应商描述',
      `proContact` varchar(15) DEFAULT NULL COMMENT '供应商联系人',
      `proPhone` varchar(20) DEFAULT NULL COMMENT '供应商电话',
      `userAddress` varchar(30) DEFAULT NULL COMMENT '供应商地址',
      `userFax` varchar(20) DEFAULT NULL COMMENT '供应商传真',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `smbms_provider` VALUES (1, 'BJ_GYS001', '北京三木堂商贸有限公司', '长期合作伙伴,主营产品:茅台、五粮液、郎酒、酒鬼酒、泸州老窖、赖茅酒、法国红酒等', '张国强', '13566667777', '北京市丰台区育芳园北路', '010-58858787', 1, '2013-03-21 16:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (2, 'HB_GYS001', '石家庄帅益食品贸易有限公司', '长期合作伙伴,主营产品:饮料、水饮料、植物蛋白饮料、休闲食品、果汁饮料、功能饮料等', '王军', '13309094212', '河北省石家庄新华区', '0311-67738876', 1, '2016-04-13 04:20:40', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (3, 'GZ_GYS001', '深圳市泰香米业有限公司', '初次合作伙伴,主营产品:良记金轮米,龙轮香米等', '郑程瀚', '13402013312', '广东省深圳市福田区深南大道6006华丰大厦', '0755-67776212', 1, '2014-03-21 16:56:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (4, 'GZ_GYS002', '深圳市喜来客商贸有限公司', '长期合作伙伴,主营产品:坚果炒货.果脯蜜饯.天然花茶.营养豆豆.特色美食.进口食品.海味零食.肉脯肉', '林妮', '18599897645', '广东省深圳市福龙工业区B2栋3楼西', '0755-67772341', 1, '2013-03-22 16:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (5, 'JS_GYS001', '兴化佳美调味品厂', '长期合作伙伴,主营产品:天然香辛料、鸡精、复合调味料', '徐国洋', '13754444221', '江苏省兴化市林湖工业区', '0523-21299098', 1, '2015-11-22 16:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (6, 'BJ_GYS002', '北京纳福尔食用油有限公司', '长期合作伙伴,主营产品:山茶油、大豆油、花生油、橄榄油等', '马莺', '13422235678', '北京市朝阳区珠江帝景1号楼', '010-588634233', 1, '2012-03-21 17:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (7, 'BJ_GYS003', '北京国粮食用油有限公司', '初次合作伙伴,主营产品:花生油、大豆油、小磨油等', '王驰', '13344441135', '北京大兴青云店开发区', '010-588134111', 1, '2016-04-13 00:00:00', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (8, 'ZJ_GYS001', '慈溪市广和绿色食品厂', '长期合作伙伴,主营产品:豆瓣酱、黄豆酱、甜面酱,辣椒,大蒜等农产品', '薛圣丹', '18099953223', '浙江省宁波市慈溪周巷小安村', '0574-34449090', 1, '2013-11-21 06:02:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (9, 'GX_GYS001', '优百商贸有限公司', '长期合作伙伴,主营产品:日化产品', '李立国', '13323566543', '广西南宁市秀厢大道42-1号', '0771-98861134', 1, '2013-03-21 19:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (10, 'JS_GYS002', '南京火头军信息技术有限公司', '长期合作伙伴,主营产品:不锈钢厨具等', '陈女士', '13098992113', '江苏省南京市浦口区浦口大道1号新城总部大厦A座903室', '025-86223345', 1, '2013-03-25 16:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (11, 'GZ_GYS003', '广州市白云区美星五金制品厂', '长期合作伙伴,主营产品:海绵床垫、坐垫、靠垫、海绵枕头、头枕等', '梁天', '13562276775', '广州市白云区钟落潭镇福龙路20号', '020-85542231', 1, '2016-12-21 06:12:17', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (12, 'BJ_GYS004', '北京隆盛日化科技', '长期合作伙伴,主营产品:日化环保清洗剂,家居洗涤专卖、洗涤用品网、墙体除霉剂、墙面霉菌清除剂等', '孙欣', '13689865678', '北京市大兴区旧宫', '010-35576786', 1, '2014-11-21 12:51:11', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (13, 'SD_GYS001', '山东豪克华光联合发展有限公司', '长期合作伙伴,主营产品:洗衣皂、洗衣粉、洗衣液、洗洁精、消杀类、香皂等', '吴洪转', '13245468787', '山东济阳济北工业区仁和街21号', '0531-53362445', 1, '2015-01-28 10:52:07', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (14, 'JS_GYS003', '无锡喜源坤商行', '长期合作伙伴,主营产品:日化品批销', '周一清', '18567674532', '江苏无锡盛岸西路', '0510-32274422', 1, '2016-04-23 11:11:11', NULL, NULL);
    INSERT INTO `smbms_provider` VALUES (15, 'ZJ_GYS002', '乐摆日用品厂', '长期合作伙伴,主营产品:各种中、高档塑料杯,塑料乐扣水杯(密封杯)、保鲜杯(保鲜盒)、广告杯、礼品杯', '王世杰', '13212331567', '浙江省金华市义乌市义东路', '0579-34452321', 1, '2016-08-22 10:01:30', NULL, NULL);
    
    点击查看数据库role代码
    CREATE TABLE `smbms_role` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `roleCode` varchar(30) DEFAULT NULL COMMENT '角色编码',
      `roleName` varchar(15) DEFAULT NULL COMMENT '角色名称',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `smbms_role` VALUES (1, 'SMBMS_ADMIN', '系统管理员', 1, '2016-04-13 00:00:00', NULL, NULL);
    INSERT INTO `smbms_role` VALUES (2, 'SMBMS_MANAGER', '经理', 1, '2016-04-13 00:00:00', NULL, NULL);
    INSERT INTO `smbms_role` VALUES (3, 'SMBMS_EMPLOYEE', '普通员工', 1, '2016-04-13 00:00:00', NULL, NULL);
    
    点击查看数据库user代码
    CREATE TABLE `smbms_user` (
      `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
      `userCode` varchar(15) DEFAULT NULL COMMENT '用户编码',
      `userName` varchar(15) DEFAULT NULL COMMENT '用户名字',
      `userPassword` varchar(20) DEFAULT NULL COMMENT '用户密码',
      `gender` int(10) DEFAULT NULL COMMENT '性别',
      `birthday` date DEFAULT NULL COMMENT '出生日期',
      `phone` varchar(20) DEFAULT NULL COMMENT '电话',
      `address` varchar(30) DEFAULT NULL COMMENT '地址',
      `userRole` bigint(20) DEFAULT NULL COMMENT '用户角色',
      `createdBy` bigint(20) DEFAULT NULL COMMENT '创建者',
      `creationDate` datetime DEFAULT NULL COMMENT '创建时间',
      `modifyBy` bigint(20) DEFAULT NULL COMMENT '更新者',
      `modifyDate` datetime DEFAULT NULL COMMENT '更新时间',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    INSERT INTO `smbms_user` VALUES (1, 'admin', '111', '111111', 1, '2021-04-22', '13688889999', '北京市海淀区成府路207号', 3, 1, '2013-03-21 16:52:07', 1, '2021-04-22 17:43:02');
    INSERT INTO `smbms_user` VALUES (2, 'liming', '李明', '0000000', 2, '1983-12-10', '13688884457', '北京市东城区前门东大街9号', 2, 1, '2014-12-31 19:52:09', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (5, 'hanlubiao', '韩路彪', '0000000', 2, '1984-06-05', '18567542321', '北京市朝阳区北辰中心12号', 2, 1, '2014-12-31 19:52:09', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (6, 'zhanghua', '张华', '0000000', 1, '1983-06-15', '13544561111', '北京市海淀区学院路61号', 3, 1, '2013-02-11 10:51:17', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (7, 'wangyang', '王洋', '0000000', 2, '1982-12-31', '13444561124', '北京市海淀区西二旗辉煌国际16层', 3, 1, '2014-06-11 19:09:07', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (8, 'zhaoyan', '赵燕', '0000000', 2, '2021-04-22', '18098764545', '北京市海淀区回龙观小区10号楼', 2, 1, '2016-04-21 13:54:07', 1, '2021-04-22 17:56:11');
    INSERT INTO `smbms_user` VALUES (10, 'sunlei', '孙磊', '0000000', 2, '1981-01-04', '13387676765', '北京市朝阳区管庄新月小区12楼', 3, 1, '2015-05-06 10:52:07', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (11, 'sunxing', '孙兴', '0000000', 2, '1978-03-12', '13367890900', '北京市朝阳区建国门南大街10号', 3, 1, '2016-11-09 16:51:17', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (12, 'zhangchen', '张晨', '0000000', 1, '1986-03-28', '18098765434', '朝阳区管庄路口北柏林爱乐三期13号楼', 3, 1, '2016-08-09 05:52:37', 1, '2016-04-14 14:15:36');
    INSERT INTO `smbms_user` VALUES (13, 'dengchao', '邓超', '0000000', 2, '1981-11-04', '13689674534', '北京市海淀区北航家属院10号楼', 3, 1, '2016-07-11 08:02:47', NULL, NULL);
    INSERT INTO `smbms_user` VALUES (15, 'zhaomin', '赵敏', '0000000', 1, '1987-12-04', '18099897657', '北京市昌平区天通苑3区12号楼', 2, 1, '2015-09-12 12:02:12', NULL, NULL);
    
    1. 当数据库配置完以后我们开始idea,创建一个Maven Webapp模板项目
    2. 然后开始配置Tomcat服务器
    3. 在pom.xml中导入项目依赖的jar包
    点击查看代码
    <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <dependency><!-- servlet包 -->
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>2.5</version>
        </dependency>
        <dependency><!-- jstl包 -->
          <groupId>javax.servlet.jsp.jstl</groupId>
          <artifactId>jstl-api</artifactId>
          <version>1.2</version>
        </dependency>
        <dependency><!-- jsp包 -->
          <groupId>javax.servlet.jsp</groupId>
          <artifactId>javax.servlet.jsp-api</artifactId>
          <version>2.3.3</version>
        </dependency>
        <dependency><!-- 数据库包 -->
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.28</version>
        </dependency>
        <dependency>
          <groupId>taglibs</groupId>
          <artifactId>standard</artifactId>
          <version>1.1.2</version>
        </dependency>
      </dependencies>
    

    二、进入idea开始编码

    1. 首先编写我们的实体类pojo,数据库表中的信息与之对应。
    点击User类代码
    package pojo;
    
    import java.util.Date;
    
    public class User {
        private Integer id; //id
        private String userCode; //用户编码
        private String userName; //用户名字
        private String userPassword; //用户密码
        private Integer gender; //性别
        private Date birthday; //出生日期
        private String phone; //手机号
        private String address; //地址
        private Integer userRole; //用户角色
        private Integer createBy; //创建者
        private Date creationDate; //创建时间
        private Integer modifyBy; //更新者
        private Date modifyDate; //更新时间
    
        private Integer age; //年龄
        private String userRoleName; //用户角色名字
    
        public Integer getAge() {
            Date date = new Date();
            Integer age = date.getYear() - birthday.getYear();
            return age;
        }
    
        public void setAge(Integer age) {
            this.age = age;
        }
    
        public String getUserRoleName() {
            return userRoleName;
        }
    
        public void setUserRoleName(String userRoleName) {
            this.userRoleName = userRoleName;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUserCode() {
            return userCode;
        }
    
        public void setUserCode(String userCode) {
            this.userCode = userCode;
        }
    
        public String getUserName() {
            return userName;
        }
    
        public void setUserName(String userName) {
            this.userName = userName;
        }
    
        public String getUserPassword() {
            return userPassword;
        }
    
        public void setUserPassword(String userPassword) {
            this.userPassword = userPassword;
        }
    
        public Integer getGender() {
            return gender;
        }
    
        public void setGender(Integer gender) {
            this.gender = gender;
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getPhone() {
            return phone;
        }
    
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address;
        }
    
        public Integer getUserRole() {
            return userRole;
        }
    
        public void setUserRole(Integer userRole) {
            this.userRole = userRole;
        }
    
        public Integer getCreateBy() {
            return createBy;
        }
    
        public void setCreateBy(Integer createBy) {
            this.createBy = createBy;
        }
    
        public Date getCreationDate() {
            return creationDate;
        }
    
        public void setCreationDate(Date creationDate) {
            this.creationDate = creationDate;
        }
    
        public Integer getModifyBy() {
            return modifyBy;
        }
    
        public void setModifyBy(Integer modifyBy) {
            this.modifyBy = modifyBy;
        }
    
        public Date getModifyDate() {
            return modifyDate;
        }
    
        public void setModifyDate(Date modifyDate) {
            this.modifyDate = modifyDate;
        }
    }
    
    点击Role类代码
    package pojo;
    
    import java.util.Date;
    
    public class Role {
        private Integer id; //id
        private String roleCode; //角色编码
        private String roleName; //角色名字
        private Integer createdBy; //创建者
        private Date creationDate; //创建时间
        private Integer modifyBy; //更新者
        private Date modifyDate; //更新时间
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getRoleCode() {
            return roleCode;
        }
    
        public void setRoleCode(String roleCode) {
            this.roleCode = roleCode;
        }
    
        public String getRoleName() {
            return roleName;
        }
    
        public void setRoleName(String roleName) {
            this.roleName = roleName;
        }
    
        public Integer getCreatedBy() {
            return createdBy;
        }
    
        public void setCreatedBy(Integer createdBy) {
            this.createdBy = createdBy;
        }
    
        public Date getCreationDate() {
            return creationDate;
        }
    
        public void setCreationDate(Date creationDate) {
            this.creationDate = creationDate;
        }
    
        public Integer getModifyBy() {
            return modifyBy;
        }
    
        public void setModifyBy(Integer modifyBy) {
            this.modifyBy = modifyBy;
        }
    
        public Date getModifyDate() {
            return modifyDate;
        }
    
        public void setModifyDate(Date modifyDate) {
            this.modifyDate = modifyDate;
        }
    }
    
    点击Provider代码
    package pojo;
    
    import java.util.Date;
    
    public class Provider {
        private Integer id; //id
        private String proCode; //供应商编码
        private String proName; //供应商名字
        private String proDesc; //供应商查询
        private String proContact; //供应商联系人
        private String proPhone; //供应商手机
        private String proAddress; //供应商地址
        private String proFax; //供应商传真
        private Integer createdBy; //创建者
        private Date creationDate; //创建时间
        private Integer modifyBy; //更新者
        private Date modifyDate; //更新时间
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getProCode() {
            return proCode;
        }
    
        public void setProCode(String proCode) {
            this.proCode = proCode;
        }
    
        public String getProName() {
            return proName;
        }
    
        public void setProName(String proName) {
            this.proName = proName;
        }
    
        public String getProDesc() {
            return proDesc;
        }
    
        public void setProDesc(String proDesc) {
            this.proDesc = proDesc;
        }
    
        public String getProContact() {
            return proContact;
        }
    
        public void setProContact(String proContact) {
            this.proContact = proContact;
        }
    
        public String getProPhone() {
            return proPhone;
        }
    
        public void setProPhone(String proPhone) {
            this.proPhone = proPhone;
        }
    
        public String getProAddress() {
            return proAddress;
        }
    
        public void setProAddress(String proAddress) {
            this.proAddress = proAddress;
        }
    
        public String getProFax() {
            return proFax;
        }
    
        public void setProFax(String proFax) {
            this.proFax = proFax;
        }
    
        public Integer getCreatedBy() {
            return createdBy;
        }
    
        public void setCreatedBy(Integer createdBy) {
            this.createdBy = createdBy;
        }
    
        public Date getCreationDate() {
            return creationDate;
        }
    
        public void setCreationDate(Date creationDate) {
            this.creationDate = creationDate;
        }
    
        public Integer getModifyBy() {
            return modifyBy;
        }
    
        public void setModifyBy(Integer modifyBy) {
            this.modifyBy = modifyBy;
        }
    
        public Date getModifyDate() {
            return modifyDate;
        }
    
        public void setModifyDate(Date modifyDate) {
            this.modifyDate = modifyDate;
        }
    }
    
    
    点击Bill代码
    package pojo;
    
    import java.math.BigDecimal;
    import java.util.Date;
    
    public class Bill {
        private int id; //id
        private String billCode; //账单编码
        private String productName; //商品名称
        private String productDesc; //商品描述
        private String productUnit; //商品单位
        private BigDecimal productCount; //商品数量
        private BigDecimal totalPrice; //总金额
        private Integer isPayment; //是否支付
        private Integer createdBy; //创建者
        private Date creationDate; //创建时间
        private Integer modifyBy; //更新者
        private Date modifyDate; //更新时间
        private Integer providerId; //供应商id
    
        private String providerName;//供应商名字
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public String getBillCode() {
            return billCode;
        }
    
        public void setBillCode(String billCode) {
            this.billCode = billCode;
        }
    
        public String getProductName() {
            return productName;
        }
    
        public void setProductName(String productName) {
            this.productName = productName;
        }
    
        public String getProductDesc() {
            return productDesc;
        }
    
        public void setProductDesc(String productDesc) {
            this.productDesc = productDesc;
        }
    
        public String getProductUnit() {
            return productUnit;
        }
    
        public void setProductUnit(String productUnit) {
            this.productUnit = productUnit;
        }
    
        public BigDecimal getProductCount() {
            return productCount;
        }
    
        public void setProductCount(BigDecimal productCount) {
            this.productCount = productCount;
        }
    
        public BigDecimal getTotalPrice() {
            return totalPrice;
        }
    
        public void setTotalPrice(BigDecimal totalPrice) {
            this.totalPrice = totalPrice;
        }
    
        public Integer getIsPayment() {
            return isPayment;
        }
    
        public void setIsPayment(Integer isPayment) {
            this.isPayment = isPayment;
        }
    
        public Integer getCreatedBy() {
            return createdBy;
        }
    
        public void setCreatedBy(Integer createdBy) {
            this.createdBy = createdBy;
        }
    
        public Date getCreationDate() {
            return creationDate;
        }
    
        public void setCreationDate(Date creationDate) {
            this.creationDate = creationDate;
        }
    
        public Integer getModifyBy() {
            return modifyBy;
        }
    
        public void setModifyBy(Integer modifyBy) {
            this.modifyBy = modifyBy;
        }
    
        public Date getModifyDate() {
            return modifyDate;
        }
    
        public void setModifyDate(Date modifyDate) {
            this.modifyDate = modifyDate;
        }
    
        public Integer getProviderId() {
            return providerId;
        }
    
        public void setProviderId(Integer providerId) {
            this.providerId = providerId;
        }
    
        public String getProviderName() {
            return providerName;
        }
    
        public void setProviderName(String providerName) {
            this.providerName = providerName;
        }
    }
    
    
    1. 然后编写数据库连接用的文件
    点击文件后缀为.properties
    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/数据库名字?useUnicode=true&characterEncoding=utf8
    username=账号
    password=密码
    
    1. idea连接数据库(不在此展示,自行解决)

    2. 编写过滤器,使我们网页每次都用utf-8编码

    点击过滤器代码
    import javax.servlet.*;
    import java.io.IOException;
    
    public class Filter implements javax.servlet.Filter {
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            chain.doFilter(request,response);
        }
    
        public void destroy() {
    
        }
    }
    
    1. 编写数据库的公共类,实现增删改查SRUD功能
    package com.meteor.dao;
    
    import java.io.IOException;
    import java.io.InputStream;
    import java.sql.*;
    import java.util.Properties;
    
    //操作数据库的公共类
    public class BaseDao {
        private static final String driver;
        private static final String url;
        private static final String username;
        private static final String password;
    
        //静态代码块,随着类的加载而加载
        static{
            Properties properties = new Properties();//可以让文件内容以键值对的形式读取
            //将文件内容读出
            InputStream is = BaseDao.class.getClassLoader().getResourceAsStream("db.properties");
            try {
                //properties.load()从输入字节流读取属性列表(键和元素对)。
                properties.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
        }
    
        //获取数据库的连接
        public static Connection getConnection() {
            Connection connection = null;
            try {
                Class.forName(driver);//加载驱动
                //尝试建立与给定数据库URL的连接。
                connection = DriverManager.getConnection(url, username, password);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return connection;
        }
    
        //编写查询公共方法
        public static ResultSet execute(Connection connection,String sql,Object[] params,ResultSet resultSet,PreparedStatement preparedStatement) throws SQLException {
            //connection.prepareStatement(sql)创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i+1,params[i]);//使用给定对象设置指定参数的值。
            }
            resultSet = preparedStatement.executeQuery();//返回查询结果
            return resultSet;
        }
    
        //编写增删改公共方法
        public static int execute(Connection connection,String sql,Object[] params,PreparedStatement preparedStatement) throws SQLException {
            //connection.prepareStatement(sql)创建一个 PreparedStatement对象,用于将参数化的SQL语句发送到数据库。
            preparedStatement = connection.prepareStatement(sql);
            for (int i = 0; i < params.length; i++) {
                preparedStatement.setObject(i+1,params[i]);
            }
            int updateRows = preparedStatement.executeUpdate();
            return updateRows;
        }
    
        //释放资源
        public static boolean closeResource(Connection connection,PreparedStatement preparedStatement,ResultSet resultSet) {
            boolean flag = true;
            if(resultSet != null) {
                try {
                    resultSet.close();
                    //GC回收机制,如果对象为null,就会被回收。
                    resultSet = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
    
            if(preparedStatement != null) {
                try {
                    preparedStatement.close();
                    //GC回收机制,如果对象为null,就会被回收。
                    preparedStatement = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
    
            if(connection != null) {
                try {
                    connection.close();
                    //GC回收机制,如果对象为null,就会被回收。
                    connection = null;
                } catch (SQLException e) {
                    e.printStackTrace();
                    flag = false;
                }
            }
            return flag;
        }
    }
    
    
    1. 编写service服务层代码,验证登录是否正确
    import dao.BaseDao;
    import dao.user.UserDao;
    import dao.user.UserDaoImpl;
    import pojo.User;
    
    import java.sql.Connection;
    
    public class UserServiceImpl implements UserService{
        public User login(String userCode, String password) {
            UserDaoImpl userDao = new UserDaoImpl();
            Connection connection = BaseDao.getConnection();//连接数据库
            User user = userDao.getLoginUser(connection, userCode);//获得登录用户信息
            //对登录的用户账号密码进行判断
            if(user.getUserPassword() == null ? password == null : user.getUserPassword().equals(password)) {
                BaseDao.closeResource(connection,null,null);
                return user;
            }else {
                BaseDao.closeResource(connection,null,null);
                System.out.println("密码错误");
                return null;
            }
        }
    }
    

    7.编写servlet业务层代码,和前端交互

    package com.meteor.servlet.user;
    
    import com.meteor.pojo.User;
    import com.meteor.service.user.UserService;
    import com.meteor.service.user.UserServiceImpl;
    import com.meteor.util.Constants;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class LoginServlet extends HttpServlet {
    
        //控制层调用业务层代码
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("别出bug");
            //获取前端输入的用户名和密码
            String userCode = req.getParameter("userCode");
            String userPassword = req.getParameter("userPassword");
            //和数据库的用户密码对比,调用业务层
            UserServiceImpl userService = new UserServiceImpl();
            User user = userService.login(userCode, userPassword);
    
            if(user != null) { //查有此人
                //将用户信息放到session中
                req.getSession().setAttribute(Constants.USER_SESSION,user);
                //登录成功,跳转到内部主页
                resp.sendRedirect("jsp/frame.jsp");
            }else {
                //查无此人,转回登录页面
                req.setAttribute("error","用户密码不正确");
                req.getRequestDispatcher("login.jsp").forward(req,resp);
            }
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    
    
    1. 工具类用来存放session值
    点击查看代码
    
    public class Constants {
        public static final String USER_SESSION = "userSession";
    }
    
    
    1. 在web.xml设置servlet和filter过滤器
    
    <!-- 字符编码过滤器 -->
        <filter>
            <filter-name>CharacterEncodingFilter</filter-name>
            <filter-class>com.meteor.filter.CharacterEncodingFilter</filter-class>
        </filter>
        <filter-mapping>
            <filter-name>CharacterEncodingFilter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    
        <!-- 设置欢迎页面 -->
        <welcome-file-list>
            <welcome-file>login.jsp</welcome-file>
        </welcome-file-list>
    
        <servlet>
            <servlet-name>LoginServlet</servlet-name>
            <servlet-class>com.meteor.servlet.user.LoginServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>LoginServlet</servlet-name>
            <url-pattern>/login.do</url-pattern>
        </servlet-mapping>
    

    三、总结

    • 前端代码页面都是cpoy的,若想获取前端代码可私信我。
    • 对于smdms登录内容就总结这么多,也是跟着狂神学的,代码也没怎么改进,只是想自己复习理解一遍。如果有不足之处,希望大家多多包涵,多多支持。如果有不懂的地方可以直接私信问我,欢迎来访!
    • 我将会继续更新关于Java的学习知识,以及此项目的后续功能,感兴趣的小伙伴可以关注一下。
    • 文章写得比较走心,用了很长时间,绝对不是copy过来的!
    • 尊重每一位学习知识的人,同时也尊重每一位分享知识的人。

    __EOF__

    本文作者Meteor-鑫
    本文链接https://www.cnblogs.com/lx-meteor/p/16097727.html
    关于博主:评论和私信会在第一时间回复。或者直接私信我。
    版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
  • 相关阅读:
    电子方案开发——智能跳绳方案
    电脑字体怎么改?4个方法快速更改字体!
    springmvc集成ehcache
    用Python获取网络数据
    软件测试报告模板(完整版)
    完整的JVM详细介绍(全面)
    《优 化》
    云原生系列 三【轻松入门容器基础操作】
    MapStruct_概念、如何使用、子集和映射、合并、Spring方式、表达式、自定义切面处理
    work环境配置
  • 原文地址:https://www.cnblogs.com/lx-meteor/p/16097727.html