Coding Note

[JSP] JDBC 연동 - DB 로그인, 로그아웃하기_1 본문

Web/Jsp

[JSP] JDBC 연동 - DB 로그인, 로그아웃하기_1

jinnkim 2022. 2. 6. 10:30

 

 

JDBC 연동해서 로그인, 로그아웃하기!

 

 

구현

 

 

 

 

코드

1. Web.xml(중요!!!!!!!)

 

 <!-- 오라클 DB 접속 정보 : 초기화 매개변수 입력-->
  <context-param>
  	<param-name>OracleDriver</param-name>
  	<param-value>oracle.jdbc.driver.OracleDriver</param-value>
  </context-param>
  <context-param>
	<param-name>OracleURL</param-name>
	<param-value>"연결할 oracleURL 작성"</param-value>  
  </context-param>
   <context-param>
	<param-name>OracleId</param-name>
	<param-value>"연결할 oracleID 작성"</param-value>  
  </context-param>
   <context-param>
	<param-name>OraclePwd</param-name>
	<param-value>"연결할 oraclePWD 작성"</param-value>  
  </context-param>

 

 

 

 

2. MemberDTO

 

 

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
public class MemberDTO {
    
    //멤버 변수
    private String id;
    private String pass;
    private String name;
    private String regidate;
    
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getPass() {
        return pass;
    }
    public void setPass(String pass) {
        this.pass = pass;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getRegidate() {
        return regidate;
    }
    public void setRegidate(String regidate) {
        this.regidate = regidate;
    }
}
cs

 

 

 

 

3. JDBC 연동

 

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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
public class JDBConnection {
    
    public Connection con;
    public PreparedStatement psmt;
    public ResultSet rs;    //select 쿼리문의 결과를 저장할때 사용
    
 
    public JDBConnection() {
        try {
            //JDBC 드라이버 로드
            Class.forName("oracle.jdbc.driver.OracleDriver");
            
            //DB에 연결
            String url ="연결할 oracle uri";
            String id = "아이디 입력";
            String pwd = "비번 입력";
            con = DriverManager.getConnection(url, id, pwd);
            
            System.out.println("DB 연결 성공");
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
    
    public JDBConnection(String driver, String url, String id, String pwd) {
        try {
            //JDBC 드라이버 로드
            Class.forName(driver);
            //DB에 연결
            con = DriverManager.getConnection(url, id, pwd);
            System.out.println("DB 연결 성공-매개변수 생성자");
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    public JDBConnection(ServletContext application) {
        try {    //JDBC 드라이버 로드
                String driver =    application.getInitParameter("OracleDriver");
                Class.forName(driver);
                
                //DB에 연결
                String url =application.getInitParameter("OracleURL");
                String id =application.getInitParameter("OracleId");
                String pwd =application.getInitParameter("OraclePwd");
                con = DriverManager.getConnection(url, id, pwd);
                
                System.out.println("DB 연결 성공-매개변수 생성자2");
                
        } catch(Exception e) {
            e.printStackTrace();
        }
        
    }
    
    //연결 해제(자원반납)
    public void close() {
        try {
            if(rs != null) rs.close();
            if(psmt != null) psmt.close();
            if(con != null) con.close();
            
            System.out.println("JDBC 자원해제");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}
 
cs

 

 

 

4. MemberDAO

 

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
public class MemberDAO extends JDBConnection{
    
    // 명시된 DB로의 연결 완료된 MemberDAO 객체 생성
    public MemberDAO(String drv, String url, String id, String pwd) {
        super(drv, url, id, pwd);
    }
    
    public MemberDTO getMember(String uid, String upass) {
        MemberDTO dto = new MemberDTO();
        //쿼리문 
        String query = "SELECT * FROM MEMBER WHERE ID =?  AND PASS = ?";
        
        try {
            psmt = con.prepareStatement(query);
            psmt.setString(1, uid);     //쿼리문의 첫번째 파라미터 값 설정
            psmt.setString(2, upass);   //쿼리문의 두번째 파라미터 값 설정
            rs = psmt.executeQuery();    //쿼리문 실행
            
            if(rs.next()) {
                //쿼리 결과로 얻은 회원정보를 DTO 객체에 저장
                dto.setId(rs.getString("id"));
                dto.setPass(rs.getString("pass"));
                dto.setName(rs.getString(3));
                dto.setRegidate(rs.getString(4));
            }
        }
        catch(Exception e) {
            e.printStackTrace();
        }
        return dto;        //dto 객체 반환
    }
}
 
cs

 

 

< 공부하기 >

 

1. JDBC(Java DataBase Connectivity)

   - SQL문을 실행하여 데이터를 관리하기 위한 JAVA API임.
   - 해당 DB의 JDBC를 이용하면 하나의 프로그램으로 DB를 관리할수 있음.

 

!중요!

2. JDBC를 사용한 DB연동 순서
   1) JDBC 드라이버 로딩
   2) 데이터베이스 접속을 위한 Connection 객체 생성
   3) 쿼리문을 실행하기 위한 Statement/PreparedStatement 객체 생성
        - PreparedStatement 객체
            - 동적인 쿼리에 사용하며 동일한 쿼리문을 특정 값만 바꾸어서 여러번 실행해야 할때,
              또는 매개변수가 많아서 쿼리문을 정리할때 사용
   4) 쿼리 실행
        - executeQuery(String sql) : select 문 실행할때 사용 (ResultSet 객체 반환)
        - executeUpdate(String sql) : 삽입, 수정, 삭제와 관련된 SQL문 실행에 사용
   5) 쿼리 실행 결과 값(ResultSet) 사용
        - ResultSet의 시작점(BOf, before of file)
        - ResultSet의 끝점(EOf, end of file)
        - 로우(row, 데이터)를 하나씩 가져올때 파일포인터의 개념, 순차적으로 가져옴.
        - next() : 다음 레코드로 이동, previous(), first(), last()
        - getXxx(int ColumnIndex) : 설정한 ColumnIndex(필드 순번)의 필드 값을 가져옴.
        - getXxx(String ColumnName) : 설정한 ColumnName의 필드 값을  가져옴.

    6) 사용된 개체(ResultSet, PreparedStatement, Connection) 종료
        - 사용을 끝내자마자 리소스 (객체)를 해제하는 것이 좋다!

 

 

 

 

Comments