首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

jsp修改密码源码

在Java Web开发中,JSP(JavaServer Pages)常用于创建动态网页。修改密码是一个常见的功能,下面是一个简单的JSP修改密码的源码示例,包括HTML表单和JSP处理逻辑。

1. 修改密码表单 (change_password.jsp)

代码语言:txt
复制
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改密码</title>
</head>
<body>
    <h2>修改密码</h2>
    <form action="process_change_password.jsp" method="post">
        当前密码: <input type="password" name="currentPassword"><br><br>
        新密码: <input type="password" name="newPassword"><br><br>
        确认新密码: <input type="password" name="confirmNewPassword"><br><br>
        <input type="submit" value="提交">
    </form>
</body>
</html>

2. 处理修改密码请求 (process_change_password.jsp)

代码语言:txt
复制
<%@ page import="java.sql.*" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>处理修改密码</title>
</head>
<body>
<%
    String currentPassword = request.getParameter("currentPassword");
    String newPassword = request.getParameter("newPassword");
    String confirmNewPassword = request.getParameter("confirmNewPassword");

    // 假设用户ID通过session获取
    int userId = (int) session.getAttribute("userId");

    if (!newPassword.equals(confirmNewPassword)) {
        out.println("新密码和确认密码不匹配。<br>");
        response.setHeader("Refresh", "2; URL=change_password.jsp");
        return;
    }

    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {
        Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_database", "username", "password");

        // 验证当前密码
        pstmt = conn.prepareStatement("SELECT * FROM users WHERE id = ? AND password = ?");
        pstmt.setInt(1, userId);
        pstmt.setString(2, currentPassword);
        rs = pstmt.executeQuery();

        if (rs.next()) {
            // 更新密码
            pstmt = conn.prepareStatement("UPDATE users SET password = ? WHERE id = ?");
            pstmt.setString(1, newPassword);
            pstmt.setInt(2, userId);
            pstmt.executeUpdate();

            out.println("密码修改成功。<br>");
        } else {
            out.println("当前密码不正确。<br>");
        }
    } catch (Exception e) {
        e.printStackTrace();
        out.println("数据库操作失败: " + e.getMessage());
    } finally {
        try { if (rs != null) rs.close(); } catch (Exception e) {}
        try { if (pstmt != null) pstmt.close(); } catch (Exception e) {}
        try { if (conn != null) conn.close(); } catch (Exception e) {}
    }

    response.setHeader("Refresh", "2; URL=change_password.jsp");
%>
</body>
</html>

关键点解释

  1. 表单提交:用户输入当前密码、新密码及确认新密码,并通过POST方法提交到process_change_password.jsp
  2. 密码验证:在服务器端首先检查新密码与确认新密码是否一致,然后验证用户输入的当前密码是否正确。
  3. 数据库操作:使用JDBC连接数据库,验证用户身份后更新密码。
  4. 异常处理:捕获并处理可能出现的SQL异常,确保资源正确释放。

注意事项

  • 安全性:实际应用中应使用加密存储密码(如BCrypt),并且对用户输入进行严格的验证和过滤,防止SQL注入等攻击。
  • 用户体验:在修改成功或失败后,应给予用户明确的反馈,并自动重定向回修改页面或其他页面。

此示例提供了一个基本的框架,具体实现可能需要根据实际项目需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券