简单使用JDBC和Servlet实现用户注册和登录功能
时间: 2024-03-31 16:37:16 浏览: 30
好的,下面是一个简单的使用 JDBC 和 Servlet 实现用户注册和登录功能的示例代码:
1. 首先,我们需要创建一个数据库表来存储用户信息,例如:
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(50) NOT NULL
);
2. 接下来,我们需要编写一个注册 Servlet,用于处理用户提交的注册表单。以下是一个示例代码:
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/register")
public class RegisterServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASSWORD = "123456";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户提交的注册信息
String username = request.getParameter("username");
String password = request.getParameter("password");
// 插入用户信息到数据库
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {
String sql = "INSERT INTO users (username, password) VALUES (?, ?)";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
stmt.executeUpdate();
// 注册成功后跳转到登录页面
response.sendRedirect("login.html");
} catch (SQLException e) {
e.printStackTrace();
}
}
}
3. 然后,我们需要编写一个登录 Servlet,用于验证用户提交的登录信息。以下是一个示例代码:
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
// 数据库连接信息
private static final String URL = "jdbc:mysql://localhost:3306/test";
private static final String USER = "root";
private static final String PASSWORD = "123456";
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取用户提交的登录信息
String username = request.getParameter("username");
String password = request.getParameter("password");
// 验证用户信息是否正确
try (Connection conn = DriverManager.getConnection(URL, USER, PASSWORD)) {
String sql = "SELECT * FROM users WHERE username=? AND password=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
stmt.setString(2, password);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
// 登录成功,将用户信息保存到 Session 中
HttpSession session = request.getSession();
session.setAttribute("username", username);
response.sendRedirect("welcome.jsp");
} else {
// 登录失败,返回错误信息
response.sendRedirect("login.html?error=1");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
4. 最后,我们需要编写一个欢迎页面,用于显示用户登录成功后的信息。以下是一个示例代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>欢迎</title>
</head>
<body>
<h1>欢迎 <%= session.getAttribute("username") %>!</h1>
<a href="logout">退出</a>
</body>
</html>
以上就是一个简单的使用 JDBC 和 Servlet 实现用户注册和登录功能的示例代码。当然,这只是一个示例,实际应用中可能需要更复杂的逻辑和更完善的安全性措施。