본문 바로가기
My Project/Pet Shopping Mall GUI Project

[개발 일지] 반려동물 용품 쇼핑몰 GUI 구현 프로젝트 2일차 (03/12)

by 스응 2023. 3. 13.
728x90
728x90

2일차

  - 비밀번호 찾기 기능 구현

 

 


MemberDAO - 비밀번호 찾기 기능

더보기
// 비밀번호 찾기 기능
@Override
public String memberPwFind(String id, String phoneNumber) {
    String resultPw = null;

    String sql = " SELECT * FROM member WHERE id = ? AND phone_number = ? "; 

    try {
        pstmt = conn.prepareStatement(sql);
        pstmt.setString(1, id);
        pstmt.setString(2, phoneNumber);
        rs = pstmt.executeQuery();

        // 행이 존재한다면 while문으로 들어감
        while (rs.next()) {
            resultPw = rs.getString("password");
        }

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        try {
            rs.close();
            pstmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    // 비밀번호를 찾았다면 비밀번호를 반환함
    return resultPw;
}

 

pwFindFrame

더보기
public class pwFindFrame extends JFrame implements ActionListener, MouseListener {

    private JLabel idLabel; // 아이디
    private JTextField idTextField; // 아이디 입력창
    private JLabel phoneLabel; // 전화번호
    private JTextField phoneTextField; // 전화번호 입력창
    private JButton pwFindButton; // 비밀번호 찾기 버튼
    private Boolean phoneHintOff;

    public pwFindFrame() {
        initData();
        setInitLayout();
        addEventListener();
    }

    private void initData() {
        setTitle("비밀번호 찾기");
        setSize(400, 200);

        phoneHintOff = false;

        idLabel = new JLabel("    아이디");
        idTextField = new JTextField("", 10);

        phoneLabel = new JLabel("전화번호");
        phoneTextField = new JTextField("010-####-####", 10);

        pwFindButton = new JButton("비밀번호 찾기");
    }

    private void setInitLayout() {
        setLayout(null);
        setResizable(false);
        setLocationRelativeTo(null); // JFrame 가운데 배치
        Color backgroundColor = new Color(200, 235, 226);
        getContentPane().setBackground(backgroundColor);

        idLabel.setLocation(30, 50);
        idLabel.setSize(200, 10);
        add(idLabel);

        idTextField.setLocation(85, 46);
        idTextField.setSize(93, 20);
        add(idTextField);

        phoneLabel.setLocation(30, 100);
        phoneLabel.setSize(200, 10);
        add(phoneLabel);

        phoneTextField.setLocation(85, 96);
        phoneTextField.setSize(93, 20);
        add(phoneTextField);

        pwFindButton.setSize(115, 40);
        pwFindButton.setLocation(235, 60);
        add(pwFindButton);	

        setVisible(true);
    }

    private void addEventListener() {
        phoneTextField.addMouseListener(this);
        pwFindButton.addActionListener(this);
    }

    @Override
    public void actionPerformed(ActionEvent e) {
        JButton targetButton = (JButton) e.getSource();
        String resultPw = null;

        // 비밀번호 찾기 버튼
        if (targetButton == pwFindButton) {
            // 방어적 코드 (입력되지 않은 값이 있다면 실행 X)
            if (idTextField.getText().isEmpty()) {
                System.out.println("값이 입력되지 않았습니다.");
                return;
            }
            if (phoneTextField.getText().isEmpty()) {
                System.out.println("값이 입력되지 않았습니다.");
                return;
            }

            String id = idTextField.getText();
            String phoneNumber = phoneTextField.getText();

            MemberDAO memberDAO = new MemberDAO();
            resultPw = memberDAO.memberPwFind(id, phoneNumber);

            // 입력된 정보가 정확하다면
            if (resultPw != null) {
                JOptionPane.showMessageDialog(null, id + "님의 비밀번호는 " + resultPw + "입니다.", "비밀번호 찾기 성공", JOptionPane.PLAIN_MESSAGE);	
                this.dispose(); // 확인 누르면 프레임 꺼짐
            } else {
                JOptionPane.showMessageDialog(null, "정보를 잘못 입력하셨습니다.", "비밀번호 찾기 실패", JOptionPane.PLAIN_MESSAGE);					
            }
        }
    }


    // 형식 힌트 제거
    @Override
    public void mousePressed(MouseEvent e) {
        JTextField targetTextField = (JTextField) e.getSource();

        if (targetTextField == phoneTextField) {
            // 처음 눌렀을 때만 힌트가 없어지도록
            if (phoneHintOff == false) {
                targetTextField.setText("010-");
                phoneHintOff = true;
            }
        }
    }
}

 

 


실행

 

320x100
반응형

댓글