生成完整的使用JDBC技术实现修改密码功能的代码 核心JSP代码: 从Session中获取登录名 输入原密码和新密码的验证代码 核心服务端编码: Servlet接收数据并调用业务逻辑的代码 业务逻辑层的代码
时间: 2024-10-14 20:10:18 浏览: 59
在Java Web应用中,使用JDBC (Java Database Connectivity) 实现修改密码的功能涉及几个关键步骤。下面是一个简化的示例,包括核心JSP代码、前端验证以及服务器端的Servlet处理。注意,这只是一个基础示例,并未包含所有错误检查和安全措施,实际生产环境中需要更严谨的处理。
**1. 核心JSP代码(用户界面部分)**:
```jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改密码</title>
</head>
<body>
<form action="UpdatePasswordServlet" method="post">
<label for="username">用户名:</label>
<input type="text" id="username" name="username" value=<%= session.getAttribute("loginName") %> readonly><br>
<label for="oldPassword">当前密码:</label>
<input type="password" id="oldPassword" name="oldPassword"><br>
<label for="newPassword">新密码:</label>
<input type="password" id="newPassword" name="newPassword"><br>
<input type="submit" value="提交">
</form>
</body>
</html>
```
**2. 前端验证(假设在JSP内部完成)**:
```jsp
<script>
function validateForm() {
// 这里仅做基本验证,如长度等,实际项目需更复杂
var oldPassword = document.getElementById("oldPassword").value;
var newPassword = document.getElementById("newPassword").value;
if (oldPassword == "" || newPassword == "") {
alert("请输入密码");
return false;
}
}
</script>
```
**3. 服务端核心编码 - Servlet(UpdatePasswordServlet.java)**:
```java
import javax.servlet.*;
import java.io.*;
import java.sql.*;
public class UpdatePasswordServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String loginName = request.getParameter("username");
String oldPassword = request.getParameter("oldPassword");
String newPassword = request.getParameter("newPassword");
// 连接数据库
Connection conn = getConnection();
try {
// 使用Statement或PreparedStatement进行查询和更新操作
String sql = "UPDATE users SET password=? WHERE username=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, encryptPassword(newPassword)); // 对密码进行加密后再存储
pstmt.setString(2, loginName);
int rowsAffected = pstmt.executeUpdate();
if (rowsAffected > 0) {
// 更新成功
request.getSession().setAttribute("successMessage", "密码已更新");
} else {
// 更新失败,可能因为旧密码错误
request.setAttribute("errorMessage", "旧密码无效");
}
} finally {
closeConnection(conn);
}
// 跳转到相应页面显示结果
response.sendRedirect("result.jsp");
}
private Connection getConnection() { ... } // 获取数据库连接
private void closeConnection(Connection conn) { ... } // 关闭连接
// 示例:简单的MD5加密
private String encryptPassword(String password) {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] bytes = md.digest(password.getBytes());
StringBuilder sb = new StringBuilder();
for (byte b : bytes) {
sb.append(Integer.toHexString((b & 0xff) + 0x100).substring(1));
}
return sb.toString();
}
}
``**
**4. 业务逻辑层的代码**:
- `getConnection()` 和 `closeConnection()` 函数用于数据库连接管理,实际项目通常会使用数据库连接池。
- `encryptPassword` 函数是一个示例,实际应用可能使用更强大的密码哈希库(如BCrypt)进行加密。
阅读全文
相关推荐
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)