基于Servlet、JDBC和JSP实现登录界面的验证

作者:蛮不讲李2024.01.17 13:38浏览量:6

简介:本文将指导你如何使用Servlet、JDBC和JSP实现一个简单的登录界面验证。我们将遵循MVC(Model-View-Controller)设计模式,使得代码结构清晰,易于维护。

在实现登录界面验证之前,我们需要先建立一个数据库存储用户信息。这里我们使用MySQL数据库,创建一个名为users的表,包含idusernamepassword三个字段。
接下来,我们需要导入必要的库和包。在Java中,我们需要导入java.sql.*包来操作数据库。
首先,我们创建一个Model类,名为UserModel,用于处理与用户信息相关的业务逻辑。在这个类中,我们将编写一个方法来查询数据库中的用户信息。

  1. public class UserModel {
  2. public User getUser(String username) {
  3. User user = null;
  4. try {
  5. Class.forName("com.mysql.jdbc.Driver");
  6. Connection conn = DriverManager.getConnection(
  7. "jdbc:mysql://localhost/testdb?useUnicode=true&characterEncoding=UTF-8",
  8. "root", "password");
  9. PreparedStatement stmt = conn.prepareStatement(
  10. "SELECT * FROM users WHERE username = ?");
  11. stmt.setString(1, username);
  12. ResultSet rs = stmt.executeQuery();
  13. if (rs.next()) {
  14. user = new User();
  15. user.setId(rs.getInt("id"));
  16. user.setUsername(rs.getString("username"));
  17. user.setPassword(rs.getString("password"));
  18. }
  19. rs.close();
  20. stmt.close();
  21. conn.close();
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }
  25. return user;
  26. }
  27. }

接下来是Controller部分,我们将使用Servlet来处理用户请求。在这个Servlet中,我们将调用UserModel中的getUser()方法,并处理返回的用户对象。如果用户存在且密码正确,我们将设置一个session属性来标识用户已登录。

  1. public class LoginServlet extends HttpServlet {
  2. private UserModel userModel = new UserModel();
  3. protected void doPost(HttpServletRequest request, HttpServletResponse response)
  4. throws ServletException, IOException {
  5. String username = request.getParameter("username");
  6. String password = request.getParameter("password");
  7. User user = userModel.getUser(username);
  8. if (user != null && user.getPassword().equals(password)) {
  9. HttpSession session = request.getSession();
  10. session.setAttribute("username", username);
  11. } else {
  12. request.setAttribute("error", "用户名或密码错误!");
  13. }
  14. RequestDispatcher dispatcher = request.getRequestDispatcher("login.jsp");
  15. dispatcher.forward(request, response);
  16. }
  17. }