编写LoginServlet与数据库连接,检验账号是否存在以及登录密码是否正确
时间: 2024-03-17 14:41:57 浏览: 14
好的,首先我们需要导入 JDBC 驱动程序,以便能够连接到数据库。假设我们使用 MySQL 数据库,我们可以在项目中添加 MySQL JDBC 驱动程序的 jar 包。
接下来,我们可以编写 LoginServlet,以下是代码示例:
```
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class LoginServlet extends HttpServlet {
private static final String DB_URL = "jdbc:mysql://localhost:3306/your_database_name";
private static final String DB_USER = "your_database_username";
private static final String DB_PASSWORD = "your_database_password";
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 获取表单参数
String username = request.getParameter("username");
String password = request.getParameter("password");
// 设置响应类型和编码
response.setContentType("text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
try {
// 连接数据库
Class.forName("com.mysql.jdbc.Driver");
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
// 查询用户信息
String sql = "SELECT * FROM users WHERE username = ? LIMIT 1";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
// 检查用户名是否存在
if (!rs.next()) {
out.println("该用户名不存在!");
return;
}
// 检查密码是否正确
String dbPassword = rs.getString("password");
if (!dbPassword.equals(password)) {
out.println("密码不正确!");
return;
}
// 登录成功,设置 Session
HttpSession session = request.getSession();
session.setAttribute("username", username);
// 跳转到首页
response.sendRedirect(request.getContextPath() + "/index.jsp");
// 关闭数据库连接
rs.close();
pstmt.close();
conn.close();
} catch (Exception e) {
out.println("数据库连接失败:" + e.getMessage());
e.printStackTrace();
}
}
}
```
在上面的代码中,我们首先获取表单中的用户名和密码参数。然后,我们连接到 MySQL 数据库,并查询用户名是否存在以及密码是否正确。如果用户名不存在或密码不正确,我们将输出错误信息并返回。否则,我们将设置 Session,并跳转到首页。
需要注意的是,我们应该将数据库连接的用户名和密码存储在安全的地方,而不是直接在代码中明文存储。同时,我们应该在 finally 块中关闭数据库连接,以防止资源泄漏。