Struts1.x 登录实验-数据库版
前言
在Struts1.x 登录实验-无数据库版基础上,进行一定的修改使其可以通过访问数据库来实现登录验证操作。
环境配置
下载MySQL相应的驱动
官网链接:https://downloads.mysql.com/archives/c-j/
注:本文所用MySQL版本为8.0.25, 使用的mysql-connector-java-8.0.26
注:请根据自己的MySQL版本选择相应的mysql-connector-java-x.x.x
具体MySQL版本与对应的mysql-connector-java版本,参见:
https://blog.csdn.net/xunxue1523/article/details/105524758
下载成功后,解压即可
导入到项目中
直接将mysql-connector-java-8.0.26.jar
文件复制到WEB-INF/lib路径下即可
实验步骤
修改LoginAction类
添加成员变量
添加下列变量:
// MySQL-URL(jdbc:mysql://ip:3306/数据库名)
// (jdbc:mysql://@localhost:3306/数据库名)
static final String URL = "jdbc:mysql://192.168.31.131:3306/Strutsleaning";
// 登录的用户名
static final String USER = "root";
// 登录密码
static final String PASSWD = "123456";
添加成员方法
添加成员方法private boolean verify(String username, String passwd)
来实现通过数据库校验的功能
具体实现如下:
private boolean verify(String username, String passwd) {
try {
// 加载数据库驱动程序
Class.forName("com.mysql.cj.jdbc.Driver");
// 获得数据库连接
Connection conn = DriverManager.getConnection(URL, USER, PASSWD);
// 通过数据库的连接操作数据库,实现增删改查
Statement stmt = conn.createStatement();
//查找和数据库存储数据一致的用户名
String sql = "select passwd from login where username =\""+username+"\"";
ResultSet rs = stmt.executeQuery(sql);
//判断输入的密码是否和数据库中存储的密码是一致的
while (rs.next()) {
if(rs.getString("passwd").equals(passwd))
return true;
}
// 完成后关闭创建的实例
rs.close();
stmt.close();
conn.close();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理驱动程序错误
e.printStackTrace();
}
return false;
}
修改execute方法
将if ("admin".equals(username) && "admin".equals(password))
修改为:
if(verify(username, passwd))
设置数据库
创建Strutsleaning数据库
CREATE DATABASE `Strutsleaning`
CHARACTER SET 'utf8'
COLLATE 'utf8_general_ci'
添加相应的登录表
CREATE TABLE `Strutsleaning`.`login`(
`username` varchar(255) NOT NULL,
`passwd` varchar(255) NULL,
PRIMARY KEY (`username`)
)
添加root用户到登录表
INSERT INTO `Strutsleaning`.`login`(`username`, `passwd`)
VALUES ('root', '123456')
运行测试
实验成功!
感谢阅读!
有疑问或者认为有错误请留言,谢谢!