用户登录和注册系统的代码,将用户名、密码和上次登录时间存在MySQL数据库中,构建Users类,用于存放用户对象;创建Utils类,用于提供数据库连接和关闭方法;创建UsersDao类,用于提供数据库接口;创建一个登录页面和注册页面,以及用于处理用户登录和注册的Servlet。
时间: 2024-02-22 17:00:28 浏览: 98
好的,这是一个相对比较复杂的系统,需要涉及到前端页面、后端代码和数据库的交互。以下是一个简单的示例代码,仅供参考:
1. 创建Users类,用于存放用户对象
```java
public class User {
private String username;
private String password;
private Date lastLoginTime;
public User(String username, String password, Date lastLoginTime) {
this.username = username;
this.password = password;
this.lastLoginTime = lastLoginTime;
}
// 以下是getter和setter方法
}
```
2. 创建Utils类,用于提供数据库连接和关闭方法
```java
public class Utils {
private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String DB_URL = "jdbc:mysql://localhost:3306/mydb";
private static final String USER = "root";
private static final String PASS = "123456";
public static Connection getConnection() {
Connection conn = null;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL, USER, PASS);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeConnection(Connection conn, Statement stmt, ResultSet rs) {
try {
if (rs != null)
rs.close();
if (stmt != null)
stmt.close();
if (conn != null)
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
3. 创建UsersDao类,用于提供数据库接口
```java
public class UserDao {
public boolean addUser(User user) {
Connection conn = Utils.getConnection();
PreparedStatement pstmt = null;
boolean flag = false;
try {
String sql = "INSERT INTO users (username, password, last_login_time) VALUES (?, ?, ?)";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setTimestamp(3, new Timestamp(user.getLastLoginTime().getTime()));
int result = pstmt.executeUpdate();
if (result > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
Utils.closeConnection(conn, pstmt, null);
}
return flag;
}
public User getUser(String username, String password) {
Connection conn = Utils.getConnection();
PreparedStatement pstmt = null;
ResultSet rs = null;
User user = null;
try {
String sql = "SELECT * FROM users WHERE username=? AND password=?";
pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();
if (rs.next()) {
user = new User(rs.getString("username"), rs.getString("password"), rs.getTimestamp("last_login_time"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
Utils.closeConnection(conn, pstmt, rs);
}
return user;
}
public boolean updateLastLoginTime(String username, Date lastLoginTime) {
Connection conn = Utils.getConnection();
PreparedStatement pstmt = null;
boolean flag = false;
try {
String sql = "UPDATE users SET last_login_time=? WHERE username=?";
pstmt = conn.prepareStatement(sql);
pstmt.setTimestamp(1, new Timestamp(lastLoginTime.getTime()));
pstmt.setString(2, username);
int result = pstmt.executeUpdate();
if (result > 0) {
flag = true;
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
Utils.closeConnection(conn, pstmt, null);
}
return flag;
}
}
```
4. 创建一个登录页面和注册页面,以及用于处理用户登录和注册的Servlet
登录页面 login.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form action="login" method="post">
<label>Username:</label><input type="text" name="username"><br>
<label>Password:</label><input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
注册页面 register.jsp:
```html
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h1>Register</h1>
<form action="register" method="post">
<label>Username:</label><input type="text" name="username"><br>
<label>Password:</label><input type="password" name="password"><br>
<input type="submit" value="Register">
</form>
</body>
</html>
```
处理登录和注册的Servlet LoginServlet 和 RegisterServlet:
```java
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDao userDao = new UserDao();
User user = userDao.getUser(username, password);
if (user == null) {
// 登录失败
response.sendRedirect("login.jsp");
} else {
// 更新上次登录时间
userDao.updateLastLoginTime(user.getUsername(), new Date());
// 登录成功,保存用户信息到session
HttpSession session = request.getSession();
session.setAttribute("user", user);
// 跳转到首页
response.sendRedirect("index.jsp");
}
}
}
public class RegisterServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserDao userDao = new UserDao();
User user = new User(username, password, new Date());
boolean result = userDao.addUser(user);
if (result) {
// 注册成功,跳转到登录页面
response.sendRedirect("login.jsp");
} else {
// 注册失败,返回注册页面
response.sendRedirect("register.jsp");
}
}
}
```
以上是一个简单的用户登录和注册系统的代码示例,仅供参考。实际开发中,需要根据实际需求进行调整和完善。
阅读全文
相关推荐

















