目录
案例需求: 在网站的首页上,登录的链接,点击登录的链接,可以跳转到登录的页面.在登录的页面中输入用户名和密码点击登录的案例.完成登录的功能.
案例 用户登录
案例需求: 在网站的首页上,登录的链接,点击登录的链接,可以跳转到登录的页面.在登录的页面中输入用户名和密码点击登录的案例.完成登录的功能.
案例分析:
实现步骤
- 创建数据库表
- 创建WEB项⽬
- 添加必要的jar,配置⽂件,⼯具类,JavaBean(User类)
- 创建⾃⼰的包
- 编写⻚⾯
- 编写服务器Servlet
先来看一下写完的项目结构
解释下划线的意义:
- DruidUtils为工具类,DBUtils就是JDBC的简化开发⼯具包。需要项⽬导⼊commons-dbutils-1.6.jar 才能够正常使⽤DBUtils⼯具。不懂可以看看这篇文章:https://blog.csdn.net/weixin_40959890/article/details/107747573
- druid.properties是上面DruidUtils需要的配置文件
- User类是与书库相匹配的用户类,用于接收查询结果
- UserServlet主要功能在于交互式地浏览和生成数据或动态Web内容(此处是接收用户输入的用户名和密码,然后将用户名与数据库对比并返回结果),不懂可以看看这篇文章:https://blog.csdn.net/weixin_40959890/article/details/107833714
- lib为工具类包,DRUID连接池使⽤的jar包: druid-1.1.16.jar 数据库MySQL链接jar包:mysql-connector-java-8.0.15.jar,因为的的MySQl安装的是8版本,所以用这个,如果安装的MySQL 是5版本,需要用mysql-connector-java-5.1.37-bin.jar,而且对性的配置文件中有些许不同,在面会讲。链接:https://pan.baidu.com/s/1nf5cpEJMUvDzXuNzkx-Evw 提取码:19e8
- Login.html文件是网页前端显示文件,用户输交互界面
代码实现
数据库SQL语句,在数据库中存入一些用户名和对应的密码,后面查询用
CREATE TABLE `user`(
username VARCHAR(50),
`password` VARCHAR(50)
);
INSERT INTO `user` VALUES('tom','123'),('jerry','456');
# 通过⽤户名,密码查询 user表
SELECT * FROM `user` WHERE username='tom' AND `password`='123'
/*
dbutils 使⽤哪个结果集
BeanHandler 查询结果⼀个JavaBean
BeanListHandler 查询结果集是多个JavaBean,存储List集合
ScalarHandler 单项值查询
ColumnListHandler 查询⼀个列数据存储集合List<Object>
*/
html页面代码,head里面的title部分是标题设置,在body里面写入输入用户名和密码的表单
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>登录</title>
</head>
<body>
<!--登录表单-->
<form action="/user" method="post">
⽤户名:<input type="text" name="username" /> <br/>
密 码:<input type="text" name="password" /> <br/>
<input type="submit" />
</form>
</body>
</html>
User类:
package pojo;
public class User {
private String username;
private String password;
public User(String username, String password) {
this.username = username;
this.password = password;
}
public User() {
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
连接池工具类DruidUtils
package Utils;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/**
* 连接池工具类
*/
public class DruidUtils {
/*
1. 加载 druid.properties 配置文件
2. 创建 Druid 连接池对象
3. 提供 获得 连接池对象的方法
4. 提供 从连接池中 获取连接对象Connection的 方法
*/
public static DataSource dataSource = null;
static{
try {
//1. 加载 druid.properties 配置文件
InputStream inputStream = DruidUtils.class.getClassLoader().getResourceAsStream("druid.properties");
// 把流中的数据 保存到 Properties集合中
Properties prop = new Properties();
prop.load(inputStream);
//创建连接池对象
dataSource = DruidDataSourceFactory.createDataSource(prop);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 获取数据源对象 DataSource
*/
public static DataSource getDataSource(){
return dataSource;
}
/**
* 获取数据源中的连接对象
*/
public static Connection getConection() throws SQLException {
return dataSource.getConnection();
}
}
配置文件druid.properties:https://blog.csdn.net/weixin_40959890/article/details/107747573
https://blog.csdn.net/weixin_40959890/article/details/107761226
- MySQL8.0版本的话driverClassName=com.mysql.cj.jdbc.Driver
- MySQL5.0版本的话driverClassName=com.mysql.jdbc.Driver
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/test_wensong?useUnicode=true&characterEncoding=UTF-8&useSSL=false&use&serverTimezone=Asia/Shanghai
username=root
password=root
测试1:输入正确账号密码
测试2:输入错误的账号或密码