锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

SMBMS项目讲解

时间:2023-02-02 22:30:00 9zj1b2连接器

文章目录

  • JDBC复习
  • 数据库搭建
  • 配置tomcat
    • 导入项目所需jar包
    • 建立项目包结构
    • 编写实体类
    • 数据库配置文件
  • 实现登录功能
    • 1.编写前端页面login.jsp
    • 2.设置页面web.xml
    • 3.编写dao登录用户界面
    • 4.编写dao接口实现类
    • 5.业务层接口
    • 6.实现业务层
    • 7.编写servlet
    • 9.注册servlet
    • 10.优化登录功能
    • 11.登录拦截优化
    • 注册filter
  • 密码修改
    • 1.导入前端材料
    • 2.框架思路
    • UserDao接口
    • UserDao接口实现
    • UserService层
    • UserService层实现
    • Servlet记得实现复用,需要提取方法!
    • 注册servlet
    • 导入jar包
  • 用户管理
    • UserDao
    • UserDaoImpl
    • Userservice
    • UserService实现
  • 获取用户列表
    • userdao
    • userdao实现
    • userService
    • userService实现
  • 获取用户列表
    • RoleDao
    • RoleDaoImpl
    • RoleService
    • RoleServiceImpl
    • UserServlet

JDBC复习

需要jar包的支持:

java.sql
javax.sql
mysql-connection-java…(连接驱动)
导入jar包

 <dependencies>         <dependency>             <groupId>mysql</groupId>             <artifactId>mysql-connector-java</artifactId>             <version>5.1.47</version>         </dependency>     </dependencies> 

创建数据库

DROP TABLE `users`;   CREATE TABLE `users`(   `id` INT PRIMARY KEY,   `name` VARCHAR(50) NOT NULL,   `password` VARCHAR(40) NOT NULL,   `email` VARCHAR(60) NOT NULL,   `birthday` DATE ) ENGINE=INNODB DEFAULT CHARSET=utf8  INSERT INTO `users` (`id`, `name`, `password`, `email` `birthday`) VALUES('1','张三','123456','zs@sina.com','2021-07-14'); INSERT INTO `users` (`id`, `name`, `password`, `email`, `birthday`) VALUES('2','李四','123456','lisi@sina.com','1981-12-04'); INSERT INTO `users` (`id`, `name`, `password`, `email`, `birthday`) VALUES('3','王五','123456','wangwu@sina.com','1982-12-04'); INSERT INTO `users` (`id`, `name`, `password`, `email`, `birthday`) VALUES('4','赵六','123456','zhaoliu@sina.com','1987-12-05'); INSERT INTO `users` (`id`, `name`, `password`, `email`, `birthday`) VALUES('5','钱七','123456','qianqi@sina.com','2021-07-19'); INSERT INTO `users` (`id`, `name`, `password`, `email`, `birthday`) VALUES('6','刘八','123456','liuba@sina.com','2021-07-19'); 

idea连接数据库(6步曲

package com.jdbc.test;

import java.sql.*;

public class TestJdbc { 
        
    public static void main(String[] args) throws ClassNotFoundException, SQLException { 
        
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&useSSL=false";
        String username = "root";
        String password = "123456";

        //加载驱动
        Class.forName("com.mysql.jdbc.Driver");
        //连接数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //创建Statement
        Statement statement = connection.createStatement();
        //编写sql
        String sql="select * from users";
        //执行sql
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){ 
        
            System.out.println("id=:"+ resultSet.getObject("id"));
            System.out.println("NAME=:"+ resultSet.getObject("NAME"));
            System.out.println("PASSWORD=:"+ resultSet.getObject("PASSWORD"));
            System.out.println("email=:"+ resultSet.getObject("email"));
            System.out.println("birthday=:"+ resultSet.getObject("birthday"));

        }
        //关闭连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

预编译sql 防止mysql注入

public class Test2Jdbc { 
        
    public static void main(String[] args) { 
        
        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf-8";
        String user = "root";
        String pwd = "123456";
        try { 
        

            //1. 加载驱动
            Class.forName("com.mysql.jdbc.Driver");
            //2. 连接数据库
            Connection con = DriverManager.getConnection(url, user, pwd);

            //3.sql
            String str = "insert into users(id, name, password, email, birthday) values (?,?,?,?,?)";
            //4. 预编译
            PreparedStatement statement = con.prepareStatement(str);
            statement.setInt(1,8);
            statement.setString(2,"小红");
            statement.setString(3,"123456");
            statement.setString(4,"xiaohong@sina.com");
            statement.setDate(5,new java.sql.Date(System.currentTimeMillis()));


            //5.执行sql
            int count = statement.executeUpdate();

            if (count > 0) { 
        
                System.out.println("插入成功!");
            }
            statement.close();
            con.close();

        } catch (ClassNotFoundException e) { 
        
            e.printStackTrace();
        } catch (SQLException e) { 
        
            e.printStackTrace();
        }
    }
}

jdbc 事务

开启事务
事务提交 commit()
事务回滚 rollback()
关闭事务

转账:
A:1000
B:1000

A(900) —100–> B(1100)
构建数据库

CREATE TABLE `account`(
  `id` INT PRIMARY KEY,
  `name` VARCHAR(50) NOT NULL,
  `money` FLOAT NOT NULL
) ENGINE=INNODB DEFAULT CHARSET=utf8

INSERT INTO `account` (`id`, `name`, `money`) VALUES(1,'A',1000);
INSERT INTO `account` (`id`, `name`, `money`) VALUES(2,'B',1000);
INSERT INTO `account` (`id`, `name`, `money`) VALUES(3,'C',1000);


idea

import org.junit.Test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/** * @ClassName: Test3Jdbc * @Description: TODO 类描述 * @Author: zyy * @Date: 2021/12/16 21:11 * @Version: 1.0 */
public class Test3Jdbc { 
        

    @Test
    public void test() { 
        

        String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf-8";
        String user = "root";
        String pwd = "123456";
        Connection con = null;
        try { 
        

            Class.forName("com.mysql.jdbc.Driver");
            con = DriverManager.getConnection(url, user, pwd);


            //开启事务 这里不开启事务的话异常情况就会有问题 false是开启
            con.setAutoCommit(false);

            con.prepareStatement("update account set money=money-100 where name='A'").executeUpdate();

            //制造错误
// int i = 1 / 0;

            con.prepareStatement("update account set money=money+100 where name='B'").executeUpdate();

            con.commit();

            System.out.println("success");

        } catch (Exception e) { 
        
            System.out.println("error rollback");
            if (con != null) { 
        
                try { 
        
                    con.rollback();
                } catch (SQLException ex) { 
        
                    ex.printStackTrace();
                }
            }


        } finally { 
        
            if (con != null) { 
        
                try { 
        
                    con.close();
                } catch (SQLException e) { 
        
                    e.printStackTrace();
                }
            }
        }

    }
}

项目讲解

数据库搭建

DROP TABLE IF EXISTS `smbms_address`;
CREATE TABLE `smbms_address`  (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `contact` VARCHAR(15) NULL DEFAULT NULL COMMENT '联系人姓名',
  `addressDesc` VARCHAR(50) NULL DEFAULT NULL COMMENT '收货地址明细',
  `postCode` VARCHAR(15) NULL DEFAULT NULL COMMENT '邮编',
  `tel` VARCHAR(20) NULL DEFAULT NULL COMMENT '联系人电话',
  `createdBy` BIGINT(20) NULL DEFAULT NULL COMMENT '创建者',
  `creationDate` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
  `modifyBy` BIGINT(20) NULL DEFAULT NULL COMMENT '修改者',
  `modifyDate` DATETIME NULL DEFAULT NULL COMMENT '修改时间',
  `userId` BIGINT(20) NULL DEFAULT NULL COMMENT '用户ID',
  PRIMARY KEY (`id`) USING BTREE
) 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);

DROP TABLE IF EXISTS `smbms_bill`;
CREATE TABLE `smbms_bill`  (
  `id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `billCode` VARCHAR(20) NULL DEFAULT NULL COMMENT '账单编码',
  `productName` VARCHAR(20) NULL DEFAULT NULL COMMENT '商品名称',
  `productDesc` VARCHAR(50) NULL DEFAULT NULL COMMENT '商品描述',
  `productUnit` VARCHAR(10) NULL DEFAULT NULL COMMENT '商品单位',
  `productCount` DECIMAL(20, 2) NULL DEFAULT NULL COMMENT '商品数量',
  `totalPrice` DECIMAL(20, 2) NULL DEFAULT NULL COMMENT '商品总额',
  `isPayment` INT(10) NULL DEFAULT NULL COMMENT '是否支付(1:未支付 2:已支付)',
  `createdBy` BIGINT(20) NULL DEFAULT NULL COMMENT '创建者(userId)',
  `creationDate` DATETIME NULL DEFAULT NULL COMMENT '创建时间',
  `modifyBy` BIGINT(20) NULL DEFAULT NULL COMMENT '更新者(userId)',
  `modifyDate` DATETIME NULL DEFAULT NULL COMMENT '更新时间',
  `providerId` BIGINT(20) NULL DEFAULT NULL COMMENT '供应商ID',
  PRIMARY KEY (`id`) USING BTREE
) 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 元器件数据手册IC替代型号,打造电子元器件IC百科大全!
          

相关文章