文章目录
- 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 标签:
9zj1b2连接器