实现Javaweb修改密码
时间: 2023-07-08 11:46:51 浏览: 189
要实现Javaweb修改密码,需要进行以下步骤:
1. 在数据库中创建一个用户表,其中包括用户名和密码字段。
2. 创建一个修改密码的页面,在该页面上,用户输入旧密码和新密码。
3. 在后台Java代码中,查询数据库中与输入的用户名匹配的密码,验证用户输入的旧密码是否正确。
4. 如果旧密码验证通过,将新密码更新到数据库中与该用户匹配的密码字段中。
下面是一个简单的Javaweb修改密码的代码示例:
1. 用户表的创建:
```sql
CREATE TABLE user (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
```
2. 修改密码的JSP页面:
```jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改密码</title>
</head>
<body>
<form action="ChangePasswordServlet" method="post">
旧密码:<input type="password" name="oldPassword"><br>
新密码:<input type="password" name="newPassword"><br>
<input type="submit" value="确认修改">
</form>
</body>
</html>
```
3. 修改密码的Servlet代码:
```java
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;
@WebServlet("/ChangePasswordServlet")
public class ChangePasswordServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final String DB_URL = "jdbc:mysql://localhost:3306/test";
private static final String DB_USER = "root";
private static final String DB_PASSWORD = "password";
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String oldPassword = request.getParameter("oldPassword");
String newPassword = request.getParameter("newPassword");
String username = (String) request.getSession().getAttribute("username");
if (username == null || username.isEmpty()) {
response.sendRedirect("login.jsp");
return;
}
try {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
String sql = "SELECT password FROM user WHERE username=?";
PreparedStatement stmt = conn.prepareStatement(sql);
stmt.setString(1, username);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
String password = rs.getString("password");
if (password.equals(oldPassword)) {
sql = "UPDATE user SET password=? WHERE username=?";
stmt = conn.prepareStatement(sql);
stmt.setString(1, newPassword);
stmt.setString(2, username);
stmt.executeUpdate();
response.sendRedirect("success.jsp");
} else {
response.sendRedirect("error.jsp");
}
} else {
response.sendRedirect("error.jsp");
}
rs.close();
stmt.close();
conn.close();
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
response.sendRedirect("error.jsp");
}
}
}
```
在这个例子中,我们使用了JDBC连接到MySQL数据库,并使用预处理语句执行SQL查询和更新。在修改密码时,我们首先查询数据库中与输入的用户名匹配的密码,然后验证用户输入的旧密码是否正确。如果验证通过,我们将新密码更新到数据库中与该用户匹配的密码字段中。最后,我们重定向到一个成功或错误页面,以告知用户修改密码的结果。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)