目录
环境说明
- mysql 5.7版本
- mysql中创建sx的数据库,在sx数据库中有一张tb_user的表
- tb_user的表中有id,username,password 三个字段
- Tomcat 9.0版本
- 通过servlet+JDBC实现登录功能
Servlet+JDBC可能会遇到的坑
- 在Servlet中使用jdbc运行报错提示java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
将mysql jar包放进tomcat服务器lib文件夹下
- 通过浏览器调用Servlet,页面显示乱码或无法显示
在调用Servlet代码中添加
request.setCharacterEncoding("utf-8");
web项目分层说明
以下是一般web项目分层说明
Bean层
Bean是实体层,里面存放实体类。通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。
Dao层
Dao是持久层,访问数据库,实现数据库的增删改查。
Service层
Service是业务层,用来处理业务相关的事情。
Controller层
Controller是控制层,控制页面跳转等操作。
Servlet 生命周期
- 初始化
- 实例化
- 服务
- 销毁
登录功能代码
案例整体结构图
User类
package bean;
public class User {
public User() {
}
public User(int id, String username, String password) {
this.id = id;
this.username = username;
this.password = password;
}
public User(String username, String password) {
this.username = username;
this.password = password;
}
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}
DBUtil类
package dao.DBUtil;
import java.sql.*;
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
/*加载驱动*/
Class.forName("com.mysql.jdbc.Driver");
/*创建连接*/
Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/sx","root","");
System.out.println("创建连接成功");
return connection;
}
public static void closeAll(ResultSet resultSet, Statement statement, Connection connection) throws SQLException {
if (resultSet!=null){
resultSet.close();
}
if (statement!=null){
statement.close(