회원가입이 완료되었으면 축하한다는 메시지와 함께 로그인페이지로 다시 넘어간다.

로그인을 하기위해서는 DB안의 나의 정보와 일치하는지 확인이 필요하다.

그 확인을 위한 소스이다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.Properties;
 
public class DBLogin {
 
    String id = null;
    String pw = null;
 
    Statement stmt = null;
    ResultSet rs = null;
    String url = "jdbc:oracle:thin:@203.236.209.197:1521:xe"// 오라클 포트번호1521/@이후에는 IP주소
    String sql = null;
    Properties info = null;
    Connection cnn = null;
 
    int checkIDPW(String id, String pw) {
        this.id = id;
        this.pw = pw;
        int result = 1;
 
        try {
            Class.forName("oracle.jdbc.driver.OracleDriver"); // 알아서 들어간다..conn로
            info = new Properties();
            info.setProperty("user""scott");
            info.setProperty("password""tiger");
            cnn = DriverManager.getConnection(url, info); // 연결할 정보를 가지고있는 드라이버매니저를 던진다
            stmt = cnn.createStatement();
 
            sql = "select * from joinDB where id='" + id + "'";
            rs = stmt.executeQuery(sql); // 읽어오는거라 다르다 비교해    //리턴타입이 ResultSet
 
            if (rs.next() == false || (id.isEmpty()) == true) { // id가 존재x
                result = 1;
            } else {
                sql = "select * from (select * from joinDB where id='" + id + "')";
                rs = stmt.executeQuery(sql);
                while (rs.next() == true) {         // 다음값의
                    if (rs.getString(2).equals(pw)) { // pw와 같은지 비교
                        result = 0;         // 같으면 로그인 성공
                    } else {                // 아이디는같고 pw가 다른경우
                        result = 1;
                    }
                }
            }
        } catch (Exception ee) {
            System.out.println("문제있음");
            ee.printStackTrace();
        }
        return result;
    }
}
cs


id와 pw를 받아와서 데이터베이스에 연결하여 일치하는지를 검사하는 소스이다.

id와 pw가 일치하여 로그인에 성공하면 "0"을 리턴하고, 하나라도 잘못작성한경우 "1"을 리턴한다.

스레드 파일(ServerThread.java)에서 스레드를 생성함과 동시에 적용이되는 메소드이다.

스레드 파일에서의 소스를 보면 아래와 같다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
    private void login(String id, String pw) {
        StringBuffer str = new StringBuffer();
        try {
 
            DBLogin logdb = new DBLogin();
            int result = logdb.checkIDPW(id, pw);
 
            if (result == 0) { // result가 0이면 성공
                for (int i = 0; i < userArray.size(); i++) {
                    if (id.equals(userArray.get(i).getId())) {
                        try {
                            System.out.println("접속중");
                            thisUser.writeUTF(User.LOGIN + "/fail/이미 접속 중입니다.");
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                        return;
                    }
                }
                // 로그인 OK
                user.setId(id);
                user.setPw(pw);
                user.setNickName(id);
                thisUser.writeUTF(User.LOGIN + "/OK/" + user.getNickName());
                this.user.setOnline(true);
 
                // 대기실에 에코
                echoMsg(User.ECHO01 + "/" + user.toString() + "님이 입장하셨습니다.");
                jta.append(id + " : 님이 입장하셨습니다.\n");
 
                roomList(thisUser);
                for (int i = 0; i < userArray.size(); i++) {
                    userList(userArray.get(i).getDos());
                }
 
                jta.append("성공 : DB 읽기 : " + id);
            } else { // result가 1이면 실패
                thisUser.writeUTF(User.LOGIN + "/fail/아이디와 비밀번호를 확인해 주세요!");
            }
 
        } catch (Exception e) {
            try {
                thisUser.writeUTF(User.LOGIN + "/fail/아이디가 존재하지 않습니다!");
            } catch (IOException e1) {
                e1.printStackTrace();
            }
            jta.append("실패 : DB 읽기\n");
            return;
        }
 
    }
cs


리턴받은 값 (0혹은1) 을 받아서 if문 else문으로 성공과 실패를 나눠준다.

성공 시 대기창으로 이동하고 실패시 앞의 메세지 박스와는 다른 방법인

thisUser.writeUTF(User.LOGIN + "/fail/아이디와 비밀번호를 확인해 주세요!");

이것으로 알림을 준다.




'* Project > Chatting_Pro' 카테고리의 다른 글

서버  (0) 2016.09.07
대기화면 소스(WaitRoomUI.java)  (0) 2016.09.07
회원 수정 DB / 회원 탈퇴 DB  (1) 2016.09.07
회원가입 DB / 메시지박스  (1) 2016.09.07
전체 파일  (0) 2016.09.07

+ Recent posts