代码10

管理人员登录功能实现
package cn.edu.tyut.demo13;

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

@WebServlet("/zhiyuanupdatekeyservlet")
public class zhiyuanupdatekeyservlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

    // 获取员工提交的旧密码、新密码、新密码确认
    String oldPassword = request.getParameter("oldPassword");
    String newPassword = request.getParameter("newPassword");
    String confirmNewPassword = request.getParameter("confirmNewPassword");

    // 获取当前登录员工的信息(此处假设从session中获取登录员工的jobid,实际应用中需根据具体登录逻辑调整)
    Object jobidObj = request.getSession().getAttribute("jobid");
    if (jobidObj == null) {
        out.println("<html><body><p>未获取到登录员工信息,请重新登录后再试。</p><a href='login.jsp'>返回登录页面</a></body></html>");
        return;
    }
    int jobid = (int) jobidObj;

    try (Connection connection = Database.getConnection()) {
        // 先查询数据库验证旧密码是否正确
        String selectSql = "SELECT password FROM zhiyuan WHERE jobid =?";
        try (PreparedStatement selectStmt = connection.prepareStatement(selectSql)) {
            selectStmt.setInt(1, jobid);
            try (ResultSet rs = selectStmt.executeQuery()) {
                if (rs.next()) {
                    String storedPassword = rs.getString("password");
                    if (!storedPassword.equals(oldPassword)) {
                        out.println("<html><body><p>旧密码输入错误,请重新输入。</p><a href='updatePassword.jsp'>返回修改密码页面</a></body></html>");
                        return;
                    }
                } else {
                    out.println("<html><body><p>未找到对应的员工信息,请联系管理员。</p><a href='zhiyuanupdatekey.jsp'>返回修改密码页面</a></body></html>");
                    return;
                }
            }
        }

        // 验证新密码和确认新密码是否一致
        if (!newPassword.equals(confirmNewPassword)) {
            out.println("<html><body><p>新密码和确认新密码不一致,请重新输入。</p><a href='zhiyuanupdatekey.jsp'>返回修改密码页面</a></body></html>");
            return;
        }

        // 更新密码
        String updateSql = "UPDATE zhiyuan SET password =? WHERE jobid =?";
        try (PreparedStatement updateStmt = connection.prepareStatement(updateSql)) {
            updateStmt.setString(1, newPassword);
            updateStmt.setInt(2, jobid);
            int rowsAffected = updateStmt.executeUpdate();
            if (rowsAffected > 0) {
                out.println("<html><body><p>密码修改成功。</p><a href='login.jsp'>返回首页</a></body></html>");
            } else {
                out.println("<html><body><p>密码修改失败,请稍后再试。</p><a href='zhiyuanupdatekey.jsp'>返回修改密码页面</a></body></html>");
            }
        }
    } catch (SQLException | ClassNotFoundException e) {
        e.printStackTrace();
        out.println("<html><body><p>数据库操作出现错误: " + e.getMessage() + "</p><a href='zhiyuanupdatekey.jsp'>返回修改密码页面</a></body></html>");
    }
}

}

posted @ 2025-02-12 20:42  林香芋  阅读(13)  评论(0)    收藏  举报