Jdbc+Servlet+Jsp+MySQL 增删改查实现登陆功能查
时间: 2023-07-30 18:08:39 浏览: 185
登陆功能的实现需要以下步骤:
1. 创建数据库表,包括用户id,用户名和密码等字段。
2. 编写JDBC代码,连接MySQL数据库,并提供增删改查操作的方法。
3. 编写Servlet代码,处理用户请求,调用JDBC方法对数据库进行操作。
4. 编写JSP页面,实现用户界面和交互效果。
下面是一个简单的示例代码:
1. 创建数据库表
```
CREATE TABLE user (
id INT(11) PRIMARY KEY AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
```
2. 编写JDBC代码
JDBC代码需要连接MySQL数据库,并提供增删改查操作的方法。以下是一个简单的示例代码:
```
public class UserDao {
private static final String URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
private static final String USER = "root";
private static final String PASSWORD = "root";
private Connection conn = null;
public UserDao() {
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (Exception e) {
e.printStackTrace();
}
}
public User getUser(String username) {
User user = null;
String sql = "SELECT * FROM user WHERE username=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, username);
ResultSet rs = pstmt.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return user;
}
public boolean addUser(User user) {
String sql = "INSERT INTO user (username, password) VALUES (?, ?)";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean updateUser(User user) {
String sql = "UPDATE user SET username=?, password=? WHERE id=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
pstmt.setInt(3, user.getId());
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
public boolean deleteUser(int id) {
String sql = "DELETE FROM user WHERE id=?";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
return false;
}
return true;
}
}
```
3. 编写Servlet代码
Servlet代码需要处理用户请求,并调用JDBC方法对数据库进行操作。以下是一个简单的示例代码:
```
public class LoginServlet extends HttpServlet {
private UserDao userDao = new UserDao();
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userDao.getUser(username);
if (user != null && user.getPassword().equals(password)) {
request.getSession().setAttribute("user", user);
response.sendRedirect(request.getContextPath() + "/index.jsp");
} else {
response.sendRedirect(request.getContextPath() + "/login.jsp?error=1");
}
}
}
```
4. 编写JSP页面
JSP页面需要实现用户界面和交互效果。以下是一个简单的示例代码:
```
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Login</title>
</head>
<body>
<c:if test="${not empty error}">
<div style="color: red;">用户名或密码错误!</div>
</c:if>
<form action="${pageContext.request.contextPath}/login" method="post">
<div>
<label for="username">用户名:</label>
<input type="text" id="username" name="username" required>
</div>
<div>
<label for="password">密码:</label>
<input type="password" id="password" name="password" required>
</div>
<div>
<input type="submit" value="登陆">
</div>
</form>
</body>
</html>
```
以上是一个简单的Jdbc+Servlet+Jsp+MySQL实现登陆功能的示例,具体实现方式可以根据需求进行调整。