안녕하세요 엘체프 GG 입니다.

데이터를 수정,조건조회,전체조회,삭제 해보겠습니다.


1에서 구조가 잡혀 있어서 MemberDAOServiceImpl 만 추가 적으로 소스 만들고 test페이지만 만들면 됩니다.


-MemberDAOServiceImpl 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
package kr.co.js.jdbc.service;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
 
import kr.co.js.jdbc.domain.MemberVO;
 
/**
 * DAO 구현 클래스(concrete class)
 * 
 * @author Administrator
 *
 */
public class MemberDAOServiceImpl implements MemberDAOService {
    // DB 연결정보
    private static final String oracleDriver = "oracle.jdbc.OracleDriver";
    private static final String oracleURL = "jdbc:oracle:thin:@localhost:1521:xe";
    private static final String oracleID = "greenjava";
    private static final String oraclePW = "greenjava";
 
    // 싱글턴(singleton) 패턴
 
    private static MemberDAOServiceImpl instance = null;
 
    private MemberDAOServiceImpl() {
 
    }
 
    public static final MemberDAOServiceImpl getInstance() {
 
        if (instance == null) {
            instance = new MemberDAOServiceImpl();
        }
 
        return instance;
    }
 
    /**
     * DB 연결(connect)
     * 
     * @return DB연결 객체
     */
    public Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(oracleDriver);
            try {
                conn = DriverManager.getConnection(oracleURL, oracleID, oraclePW);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        } catch (ClassNotFoundException e) {
            System.out.println("DAO getConnection : " + oracleDriver);
            e.printStackTrace();
        }
        return conn;
 
    }
 
    /**
     * DB연결 자원 반납
     * 
     * @param conn DB연결 객체
     * @param pstmt SQL 해석 객체
     * @param rs 결과셋 객체
     */
    public void closeAll(Connection conn, PreparedStatement pstmt, ResultSet rs) {
        try {
            if (rs != null)
                rs.close();// 유효성검사 후 자원 반납
            if (pstmt != null)
                pstmt.close();
            if (conn != null)
                conn.close();
        } catch (SQLException e) {
            System.out.println("DB close");
            e.printStackTrace();
        }
 
    }
 
    //회원정보 삽입(가입,생성)
    @Override
    public void insertMember(MemberVO memberVo) {
        Connection conn = null;// 연결 객체
        PreparedStatement pstmt = null;// SQL 해석 객체
        String sql = "INSERT INTO MEMBER VALUES (?,?,?,?,sysdate)";
 
        conn = this.getConnection(); // DB연결
        try {
            pstmt = conn.prepareStatement(sql); // SQL 해석
            pstmt.setString(1, memberVo.getMemberId());
            pstmt.setString(2, memberVo.getMemberName());
            pstmt.setString(3, memberVo.getMemberPw());
            pstmt.setString(4, memberVo.getMemberAddr());
            // pstmt.setDate(5, memberVo.getMemberJoindate());
 
            if (pstmt.executeUpdate() == 1) {
                System.out.println("성공적으로 회원 정보를 저장하였습니다.");
            } else {
                System.out.println("회원정보 저장에 실패 했습니다.");
            }
 
        } catch (SQLException e) {
            System.out.println("insertMember SQLE : ");
            e.printStackTrace();
        } finally {
 
            this.closeAll(conn, pstmt, null);
        }
    }
 
    //전체회원 정보 조회(검색)
    @Override
    public List<MemberVO> getAllMembers() throws Exception {
        
        List<MemberVO> members = new ArrayList<MemberVO>();//리턴값을 만들어줘야지~!
        
        Connection conn = this.getConnection();// 연결 객체
        PreparedStatement pstmt = null;// SQL 해석 객체
        String sql = "SELECT * FROM member";
        ResultSet rs = null;// row(결과) 집합(set)
        
//        MemberVO member = new MemberVO();//주의 같은 레코드 반복 인쇄! =>오류!
        MemberVO member =null
        try {
 
            pstmt = conn.prepareStatement(sql); // SQL 해석
            rs = pstmt.executeQuery();
 
            while (rs.next()) {
 
                member = new MemberVO();//대처법 : 레코드 (record,row)
                member.setMemberId(rs.getString("member_id"));
                member.setMemberName(rs.getString("member_name"));
                member.setMemberPw(rs.getString("member_pw"));
                member.setMemberAddr(rs.getString("member_addr"));
                member.setMemberJoindate(rs.getDate("member_joindate"));
                
                members.add(member);
 
            }
 
            // SQL 실행
 
        } catch (Exception e) {
            System.out.println("get All Member E : ");
            e.printStackTrace();
        } finally {
            this.closeAll(conn, pstmt, rs);
        }
        return members;
        
 
    }
 
    //개별 회원 정보 조회(검색)
    @Override
    public MemberVO getMember(String memberId) throws Exception {
        Connection conn = this.getConnection();// 연결 객체
        PreparedStatement pstmt = null;// SQL 해석 객체
        String sql = "SELECT * FROM member WHERE member_id=?";
        ResultSet rs = null;// row(결과) 집합(set)
        MemberVO member = new MemberVO();
 
        try {
 
            pstmt = conn.prepareStatement(sql); // SQL 해석
            pstmt.setString(1, memberId);
 
            rs = pstmt.executeQuery();
 
            while (rs.next()) {
 
                member.setMemberId(rs.getString("member_id"));
                member.setMemberName(rs.getString("member_name"));
                member.setMemberPw(rs.getString("member_pw"));
                member.setMemberAddr(rs.getString("member_addr"));
                member.setMemberJoindate(rs.getDate("member_joindate"));
 
            }
 
        } catch (Exception e) {
            System.out.println("select Member E : ");
            e.printStackTrace();
        } finally {
            this.closeAll(conn, pstmt, rs);
        }
        return member;
 
    }
    
    //개별 회원 정보 수정(갱신,변경)
    @Override
    public void updateMember(MemberVO memberVo) throws Exception {
 
        Connection conn = this.getConnection();// 연결 객체
        PreparedStatement pstmt = null;// SQL 해석 객체
        // Statement 사용시 SQL
        /*
         * String sql = "UPDATE member SET member_pw = '"+
         * memberVO.getMemberPw() +"'," +
         * "member_addr = '"+memberVO.getMemberAddr()+"' " +
         * "WHERE member_id = '"+memberVO.getMemberId()+"'";
         */
 
        // PreparedStatement 사용시 SQL
        /*
         * String sql = "UPDATE member SET member_pw=?," +
         * "                  member_addr=? " + "      WHERE member_id=?";
         */
 
        StringBuilder sql = new StringBuilder();
        /*
         * sql.append("UPDATE member SET "); sql.append("      member_pw=?,");
         * sql.append("      member_addr=? "); sql.append("WHERE member_id=?");
         */
 
        sql.append("UPDATE member SET ")
            .append("       member_pw=?,")
            .append("       member_addr=?")
            .append(" WHERE member_id=?");
 
        try {
            pstmt = conn.prepareStatement(sql.toString());
 
            // SQL 인자처리
            pstmt.setString(1, memberVo.getMemberPw());
            pstmt.setString(2, memberVo.getMemberAddr());
            pstmt.setString(3, memberVo.getMemberId());
 
            // SQL 실행
 
            if (pstmt.executeUpdate() == 1) {
                System.out.println("회원정보 수정에 성공하였습니다.");
 
            } else {
                System.out.println("회원정보 수정에 실패하였습니다.");
            }
        } catch (Exception e) {
            System.out.println("uptateMember E : ");
            e.printStackTrace();
        } finally {
            this.closeAll(conn, pstmt, null);
        }
 
    }
 
    //개별 회원 정보 삭제
    @Override
    public void deleteMember(String memberId) throws Exception {
        
        Connection conn = this.getConnection();// 연결 객체
        PreparedStatement pstmt = null;// SQL 해석 객체
        String sql = "DELETE member WHERE member_id=?";
 
        try {
 
            pstmt = conn.prepareStatement(sql); // SQL 해석
            pstmt.setString(1, memberId);
            if(pstmt.executeUpdate()==1){
                System.out.println("회원정보를 성공적으로 삭제했습니다.");
            }else{
                System.out.println("회원정보 삭제에 실패했습니다.");
            }
            
        } catch (Exception e) {
            System.out.println("delete Member E : ");
            e.printStackTrace();
        } finally {
            this.closeAll(conn, pstmt, null);
        }
        return;
    }
 
}
cs

-selectTestPage

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
/**
 * 
 */
package kr.co.js.jdbc.test;
 
import kr.co.js.jdbc.domain.MemberVO;
import kr.co.js.jdbc.service.MemberDAOService;
import kr.co.js.jdbc.service.MemberDAOServiceImpl;
 
/**
 * select Unit test
 * @author Administrator
 *
 */
public class selectTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        //싱글톤 객체 호출
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();
        MemberVO member = dao.getMember("n123");
        
        System.out.println("member : " + member);        
 
    }
}
cs

-selectAllTestPage

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
/**
 * 
 */
package kr.co.js.jdbc.test;
 
import java.util.List;
 
import kr.co.js.jdbc.domain.MemberVO;
import kr.co.js.jdbc.service.MemberDAOService;
import kr.co.js.jdbc.service.MemberDAOServiceImpl;
 
/**
 * selectAll Unit test
 * @author Administrator
 *
 */
public class allSelectTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        //싱글톤 객체 호출
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();
        List<MemberVO> members = dao.getAllMembers();
        
        for(MemberVO member : members){
        System.out.println("member : " + member);
        }        
 
    }
}
cs

-updateTestPage

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
/**
 * 
 */
package kr.co.js.jdbc.test;
 
import kr.co.js.jdbc.domain.MemberVO;
import kr.co.js.jdbc.service.MemberDAOService;
import kr.co.js.jdbc.service.MemberDAOServiceImpl;
 
/**
 * update Unit test
 * @author Administrator
 *
 */
public class updateTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        //싱글톤 객체 호출
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();
        MemberVO member = new MemberVO();
        
        member.setMemberId("n123");
        member.setMemberPw("1");
        member.setMemberAddr("1");
        
 
        dao.updateMember(member);
    }
 
}
cs


-deleteTestPage

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package kr.co.js.jdbc.test;
 
import kr.co.js.jdbc.service.MemberDAOService;
import kr.co.js.jdbc.service.MemberDAOServiceImpl;
 
/**
 * delete Unit test
 * @author Administrator
 *
 */
public class deleteTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
        //싱글톤 객체 호출
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();    
        
        dao.deleteMember("n123");        
 
    }
}
cs


오늘 하루 수고 하셧습니다.

감사합니다.

안녕하세요 엘체프 GG 입니다.

DB에 계정도 만들고 테이블도 만들고 데이터도 툴을 이용해 넣어봤는데.

이제 JAVA(자바)로 eclipse 통해 데이터를 읽고 쓰고 지우고 고치는 것 중에 넣기만 해보겠습니다.


-일딴 프로젝트를 만들고 팩키지를 만듭니다. 


단계별로 만들고 오라클이랑 연동하고 domain,service, test 까지 만들고 값객체(VO)를 만들고 비지니스 로직을 만들어서 test 합겁니다.

마지막 완성된 팩키지랑 파일

압축해놓은

자료입니다.

javaex_20180312.zip

압축풀고 드레그해서 사용하세요


-오라클이랑 연동하기

오라클에서 제공하는 ojdbc jar 파일을 path 등록을 해야합니다.

->프로젝트 우클릭 ->  Build Path -> Configure Build Path


->Libraries -> Add External JARs.. -> 

오라클 설치한곳에서 찾아야함 제경로는 ex)C:\app\GG\product\12.1.0\dbhome_1\jdbc\lib(ojdbc6 도있고 ojdbc7도 있는데 오라12c부터 ojdbc7 쓸 수 있다고 함 그래도 전 ojdbc6를 쓰겟슴다 너무최신 버전은 호환문제가 생길수도 있으니...)

->ojdbc6.jar 선택 -> 열기 ->OK 하면 프로젝트에 Referenced Libraries 및에 ojdbc6.jar 파일 생김 이게 오라클 을 연동해주는 애


-VO 객체 만들기

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
package com.javaex.jse.jdbc.domain;
 
import java.sql.Date;
 
/**
 * VO(값 객체) : Entity,
 * POJO(Plain Old Java Object)
 * , PO(Persistent Object:영속 객체)
 * @author javateam
 *
 */
public class MemberVO {
   
    // 멤버 필드 = DB 필드
    private String memberId;
    private String mermberName;
    private String memberPw;
    private String memberAddr;
    private Date   memberJoindate;
   
    public MemberVO() {}
 
    /**
     * 멤버 필드 초기화 생성자
     *
     * @param memberId 회원 아이디
     * @param mermberName 회원명
     * @param memberPw 회원 패쓰워드
     * @param memberAddr 회원 주소
     * @param memberJoindate 회원 가입일
     */
    public MemberVO(String memberId,
                    String mermberName,
                    String memberPw,
                    String memberAddr,
                    Date memberJoindate) {
        this.memberId = memberId;
        this.mermberName = mermberName;
        this.memberPw = memberPw;
        this.memberAddr = memberAddr;
        this.memberJoindate = memberJoindate;
    }
 
    /**
     * 객체 필드들(내용) 확인
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        return String.format("MemberVO [memberId=%s, "
                                     + "mermberName=%s, "
                                     + "memberPw=%s, "
                                     + "memberAddr=%s, "
                                     + "memberJoindate=%s]",
                                        memberId,
                                        mermberName,
                                        memberPw,
                                        memberAddr,
                                        memberJoindate);
       
       
    }
 
    public String getMemberId() {
        return memberId;
    }
 
    public void setMemberId(String memberId) {
        this.memberId = memberId;
    }
 
    public String getMermberName() {
        return mermberName;
    }
 
    public void setMermberName(String mermberName) {
        this.mermberName = mermberName;
    }
 
    public String getMemberPw() {
        return memberPw;
    }
 
    public void setMemberPw(String memberPw) {
        this.memberPw = memberPw;
    }
 
    public String getMemberAddr() {
        return memberAddr;
    }
 
    public void setMemberAddr(String memberAddr) {
        this.memberAddr = memberAddr;
    }
 
    public Date getMemberJoindate() {
        return memberJoindate;
    }
 
    public void setMemberJoindate(Date memberJoindate) {
        this.memberJoindate = memberJoindate;
    }
 
    /**
     * 두 객체간 필드 값들 비교 (해쉬 코드값으로 비교)
     * @see java.lang.Object#hashCode()
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((memberAddr == null) ? : memberAddr.hashCode());
        result = prime * result + ((memberId == null) ? : memberId.hashCode());
        result = prime * result + ((memberJoindate == null) ? : memberJoindate.hashCode());
        result = prime * result + ((memberPw == null) ? : memberPw.hashCode());
        result = prime * result + ((mermberName == null) ? : mermberName.hashCode());
        return result;
    }
 
    /**
     * 두 객체간 필드 값들 비교(참/거짓으로 비교)
     * @see java.lang.Object#equals(java.lang.Object)
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof MemberVO)) {
            return false;
        }
        MemberVO other = (MemberVO) obj;
        if (memberAddr == null) {
            if (other.memberAddr != null) {
                return false;
            }
        } else if (!memberAddr.equals(other.memberAddr)) {
            return false;
        }
        if (memberId == null) {
            if (other.memberId != null) {
                return false;
            }
        } else if (!memberId.equals(other.memberId)) {
            return false;
        }
        if (memberJoindate == null) {
            if (other.memberJoindate != null) {
                return false;
            }
        } else if (!memberJoindate.equals(other.memberJoindate)) {
            return false;
        }
        if (memberPw == null) {
            if (other.memberPw != null) {
                return false;
            }
        } else if (!memberPw.equals(other.memberPw)) {
            return false;
        }
        if (mermberName == null) {
            if (other.mermberName != null) {
                return false;
            }
        } else if (!mermberName.equals(other.mermberName)) {
            return false;
        }
        return true;
    }
 
}
cs

- 비지니스 로직 만들기 

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
package com.javaex.jse.jdbc.service;
 
// import java.util.ArrayList;
import java.util.List;
 
import com.javaex.jse.jdbc.domain.MemberVO;
 
 
 
/**
 * DAO(Data Access Object) : 비즈니스 로직(business(biz) logic)
 * : CRUD(create read update delete) 메서드
 * 
 * @author javateam
 *
 */
public interface MemberDAOService {
    
    // MemberDAOservice dao = MemberDAOServiceImpl.getInstance();
    /**
     * 회원정보 삽입(가입, 생성)
     * 
     * @param memberVO 회원정보 객체(VO)
     * @throws Exception 예외처리
     */
    void insertMember(MemberVO memberVO) throws Exception;
    
    // MemberVO[] getAllMembers() throws Exception;
    // ArrayList<MemberVO> getAllMembers() throws Exception;
    /**
     * 전체 회원정보 조회(검색)
     * 
     * @return 전체 회원정보 객체
     * @throws Exception 예외처리
     */
    List<MemberVO> getAllMembers() throws Exception;
    
    /**
     * 개별 회원정보 조회(검색)
     * 
     * @param memberId 회원 아이디
     * @return 개별 회원정보 객체(VO)
     * @throws Exception 예외처리
     */
    MemberVO getMember(String memberId) throws Exception;
    
    /**
     * 개별 회원정보 수정(갱신, 변경)
     * 
     * @param memberVO 개별 회원정보 객체
     * @throws Exception 예외처리
     */
    void updateMember(MemberVO memberVO) throws Exception;
//    void updateMember(String memberId, 
//                      String memberPw,
//                      String memberAddr) throws Exception;
    
    /**
     * 개별 회원정보 삭제
     * 
     * @param memberId 회원 아이디
     * @throws Exception 예외처리
     */
    void deleteMember(String memberId) throws Exception;
}
cs

----------------------------------------------------------

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
package com.javaex.jse.jdbc.service;
 
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
 
import com.javaex.jse.jdbc.domain.MemberVO;
 
 
 
/**
 * DAO 구현 클래스(concrete class)
 * 
 * @author javateam
 *
 */
public class MemberDAOServiceImpl implements MemberDAOService {
 
    // DB 연결 정보
    private static final String oracleDriver = "oracle.jdbc.OracleDriver";
    private static final String oracleURL = "jdbc:oracle:thin:@localhost:1522:orcl"//tnsnames.ora 파일 확인
    private static final String oracleId = "c##test";
    private static final String oraclePw = "test";
    
    // 싱글턴(singleton) 패턴의 DAO 객체
    // MemberDAOservice dao = MemberDAOServiceImpl.getInstance();
    private static MemberDAOServiceImpl instance = null;
    
    private MemberDAOServiceImpl() {}
    
    public static final MemberDAOServiceImpl getInstance() {
        
        if (instance == null)
            instance = new MemberDAOServiceImpl();
        
        return instance;
    }
    
    /**
     * DB 연결(connect)
     * 
     * @return DB 연결 객체
     */
    public Connection getConnection() {
         
        Connection con = null;
        
        try {
                 Class.forName(oracleDriver);
                 con = DriverManager.getConnection(oracleURL, oracleId, oraclePw);
                 
        } catch (ClassNotFoundException e) {
            System.out.println("DAO getConnection : ");
            e.printStackTrace();
        } catch (SQLException e) {
            System.out.println("DAO getConnection : ");
            e.printStackTrace();
        }
        
        return con;
    }
    
    /**
     * DB 연결 자원 반납
     * 
     * @param con DB 연결 객체
     * @param pstmt SQL 해석 객체
     * @param rs SQL 결과셋 객체
     */
    public void closeAll(Connection con, PreparedStatement pstmt, ResultSet rs) {        
        try {
                if (rs != null) rs.close(); //유효성 체크 후 자원반납
                if (pstmt != null) pstmt.close();
                if (con != null) con.close();
        } catch (SQLException e) {
            System.out.println("closeAll SQLE : ");
            e.printStackTrace();
        }
        
    }
 
    /**
     * @see com.javateam.jse.jdbc.service.MemberDAOService#insertMember(com.javateam.jse.jdbc.domain.MemberVO)
     */
    @Override
    public void insertMember(MemberVO memberVO) {
 
        Connection con = null// 연결 객체
        PreparedStatement pstmt = null// SQL 해석 객체
        // String sql = "INSERT INTO member VALUES (?, ?, ?, ?, ?)";
        String sql = "INSERT INTO member VALUES (?, ?, ?, ?, sysdate)";
        
        con = this.getConnection(); // DB 연결
        
        try {
                pstmt = con.prepareStatement(sql); // SQL 해석
                pstmt.setString(1, memberVO.getMemberId());
                pstmt.setString(2, memberVO.getMermberName());
                pstmt.setString(3, memberVO.getMemberPw());
                pstmt.setString(4, memberVO.getMemberAddr());
                // pstmt.setDate(5, memberVO.getMemberJoindate());
                
                if (pstmt.executeUpdate() == 1) {
                    System.out.println("성공적으로 회원정보를 저장하였습니다.");
                } else {
                    System.out.println("회원정보 저장에 실패하였습니다.");
                }
                        
        } catch (SQLException e) {
            System.out.println("insertMember SQLE : ");
            e.printStackTrace();
        } finally {
            this.closeAll(con, pstmt, null);//자원반납
        } // 
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#getAllMembers()
     */
    @Override
    public List<MemberVO> getAllMembers() throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#getMember(java.lang.String)
     */
    @Override
    public MemberVO getMember(String memberId) throws Exception {
        // TODO Auto-generated method stub
        return null;
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#updateMember(com.javateam.jse.jdbc.domain.MemberVO)
     */
    @Override
    public void updateMember(MemberVO memberVO) throws Exception {
        // TODO Auto-generated method stub
 
    }
 
    /* (non-Javadoc)
     * @see com.javateam.jse.jdbc.service.MemberDAOService#deleteMember(java.lang.String)
     */
    @Override
    public void deleteMember(String memberId) throws Exception {
        // TODO Auto-generated method stub
 
    }
 
}
 
cs


-INSERT TEST 해보기

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
package com.javaex.jse.jdbc.test;
 
import com.javaex.jse.jdbc.domain.MemberVO;
import com.javaex.jse.jdbc.service.MemberDAOService;
import com.javaex.jse.jdbc.service.MemberDAOServiceImpl;
 
/**
 * Insert Unit Test
 * @author javateam
 *
 */
public class InsertTest {
 
    /**
     * @param args
     * @throws Exception 
     */
    public static void main(String[] args) throws Exception {
 
        MemberDAOService dao = MemberDAOServiceImpl.getInstance();
        MemberVO member = new MemberVO("inserttest""그린자바""123456789""서울"null);
        
        dao.insertMember(member);
    } 
 
}
 
cs

-데이터 확인 해보기

콘솔창

테이블 확인 

데이터도 성공 적으로 올라왔음 

이제 select, update, delete는 다음에


감사합니다.


안녕하세요 엘체프 입니다.

자바의 마지막 소켓(socket) 통신으로 하는 채팅프로그램입니다.


소스 import해서 구현방법 알려 드리겠습니다.

Chatting.zip

1.파일을 받습니다. 그리고 import를 합니다.


->Existing Projects into Workspace

->select archive file ->파일 선택-> Finish

소스를 보고 분석하고 주석달며 보아요 

-----------

구현 해보겠습니다.

일딴 서버를 구동 시켜야합니다.

-MultiSever 파일을 실행시켜줍니다.

그럼 콘솔창에 먼가 움직이고 있으니 정지버튼이 활성화 되있네요.

-창을 띄우려면 main에다가 값을 넣어줘야합니다.

->ChattingClient 우클릭 -> Run As -> Run Configurations...

->Java Application -> Arguments 탭 -> Variables

->검색에 's'만 치면 ->string_prompt 선택 -> OK

run 하고 실행하면 창이 뜹니다.

UI창이 뜨면 아이디 ip port 를 쓰고 OK 누르면 채팅창이 뜨며 채팅이 가능해집니다.

-localhost 를 사용하면 제가 혼자 쓰는거고 제컴터 ip를 쳐서 만들면 다른컴터에서도 접속이 가능 합니다. 

-채팅장 입장!

-ChattingClient 파일 실행 할때마다 접속이 가능합니다. 

아디만 바꿔서 여러이서 입장

채팅 하기~~~~

자바 채팅 프로그램이였습니다.


감사합니다.


안녕하세요 엘체프  GG 임돠

배열 출력 문제 예시 입니다.


  1. import java.util.ArrayList;
  2. import java.util.Arrays;
  3. import java.util.Comparator;
  4. import java.util.List;
  5.  
  6. public class SeaFoods {
  7.    
  8.    /*
  9.      예시) 아래와 같이 음식에 관한 배열이 주어졌을 때, 주어진 해산물 배열
  10.      을 제외한 나머지 음식을 중복을 배제하고 역순으로 정렬하여 처음 3개만
  11.      인쇄하는 프로그램을 작성하십시오.
  12.  
  13.       권장사항) Java 1.8의 함수형 및 체이닝(Chainning) 프로그래밍 방식을
  14.       이용하여 작성하여 봅시다.
  15.      
  16.       출력결과)
  17.       토마토
  18.       배
  19.       귤
  20.      */
  21.  
  22.     public static void main(String[] args) {
  23.  
  24.         String[] foods = {"토마토""가자미""배""감""배",
  25.                           "가자미""오징어",  "귤""고등어",
  26.                           "귤""멸치""감자""토마토""감"};
  27.         List<String> list = Arrays.asList(foods);
  28.  
  29.         ArrayList<String> seaFoodList = new ArrayList<String>();
  30.         String[] seaFoods = {"오징어""고등어""가자미""문어""멸치"};
  31.         seaFoodList.addAll(Arrays.asList(seaFoods));
  32.        
  33.         // 시작
  34.        
  35.         list.stream().collect(Collectors.groupingBy(x->seaFoodList.contains(x)))
           .get(false)
           .stream()
           .sorted(Comparator.reverseOrder())
           .limit(3)
           .forEach(x->System.out.println(x));
  36. /*        list.stream()
  37.             .distinct()
  38.             .collect(Collectors.groupingBy(x -> seaFoodList.contains(x)))
  39.             .get(false)
  40.             .stream()
  41.             .sorted(Comparator.reverseOrder())
  42.             .limit(3)
  43.             .forEach(System.out::println);*/
  44.        
  45.         list.stream()
  46.             .distinct()
  47.             .filter(x -> !seaFoodList.contains(x))
  48.             .sorted(Comparator.reverseOrder())
  49.             .limit(3)
  50.             .forEach(System.out::println);
  51.        
  52.         // 끝
  53.        

  54.     } // main

  55.  
  56. }//class




안녕하세요 GG 임돠

이번에 쓰레드 임돠

 

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
package com.javac.im;
 
class ThreadEx9 {
    public static void main(String args[]) {
        ThreadEx9_1 th1 = new ThreadEx9_1();
        ThreadEx9_2 th2 = new ThreadEx9_2();
 
        th2.setPriority(7);//thread 7번 실행
 
        System.out.println("Priority of th1(-) : " + th1.getPriority() );
        System.out.println("Priority of th2(|) : " + th2.getPriority() );
        th1.start();
        th2.start();
    }
}
 
class ThreadEx9_1 extends Thread {//Thread 상속받아 사용
    public void run() {
        for(int i=0; i < 20; i++) {
            System.out.print("-");
            for(int x=0; x < 10000000; x++);//waiting 
        }
    }
}
 
class ThreadEx9_2 extends Thread {
    public void run() {
        for(int i=0; i < 20; i++) {
            System.out.print("|");
            for(int x=0; x < 10000000; x++);//waiting
        }
    }
}
cs

 

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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package com.javac.im;
class ThreadEx26 {
    public static void main(String args[]) {
        MyThreadEx26 th1 = new MyThreadEx26("*");
        MyThreadEx26 th2 = new MyThreadEx26("**");
        MyThreadEx26 th3 = new MyThreadEx26("***");
        th1.start();
        th2.start();
        th3.start();
 
        try {
            Thread.sleep(2000);
            th1.suspend();
            Thread.sleep(2000);
            th2.suspend();
            Thread.sleep(3000);
            th1.resume();
            Thread.sleep(3000);
            th1.stop();
            th2.resume();
            th2.stop();
            Thread.sleep(2000);
            th3.stop();
        } catch (InterruptedException e) {}
    }
}
 
class MyThreadEx26 implements Runnable {
    static final int RUNNING = 0;
    static final int SUSPENDED = 1;
    static final int STOPPED = 2;
 
    private int state = RUNNING;
    Thread th;
 
    MyThreadEx26(String name) {
        th = new Thread(this, name); // Thread(Runnable r, String name)
    }
 
    public synchronized void setState(int state) {
        this.state = state;
 
        // state가 SUSPENDED였다가 RUNNING으로 변경되면, nofity()를 호출한다.
        if(state==RUNNING) {
            notify();
        } else {
            th.interrupt();
        }
    }
 
    public synchronized boolean checkState() {
        // state가 SUSPENDED면 wait()을 호출해서 쓰레드를 대기상태로 만들고,
        while(state==SUSPENDED) {
            try {
                wait();
            } catch(InterruptedException e) {}
        }
        // state가 STOPPED이면 true를, 그 외에는 false를 리턴한다.
        return state==STOPPED;
    }
 
    public void run() {
        String name = Thread.currentThread().getName();
 
        while(true) {
            System.out.println(name);
            try {
                Thread.sleep(1000);
            } catch(InterruptedException e) {}
 
            // state가 STOPPED이면 checkState()가 true를 반환해서 
            // while문을 벗어나게 된다.
            if(checkState()) {
                break;
            }
        } // while
        System.out.println(name + " - END");
    } // run()
 
    public void suspend() {
        setState(SUSPENDED);
    }
 
    public void resume() {
        setState(RUNNING);
    }
 
    public void stop() {
        setState(STOPPED);
    }
 
    public void start() {
        th.start();
    }
}
cs

 

감사합니다.

안녕하세요 엘체프 GG 임돠.

컬렉션프레임워크 마지막 List,Map 임돠

 

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
package com.javac.im;
 
import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.TreeMap;
 
public class CollectionFramework3 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
    //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
/*        Set<Map.Entry<String, Integer>> set = map.entrySet();
        //map key = set 공통의 성질(중복 불허)        
        Iterator<Entry<String, Integer>> it = set.iterator();
        //순서가 없다 -> 반복자(iterator) 패턴 -> 열거(나열)        
        while(it.hasNext()){
            Entry<String , Integer> entry = it.next();
            System.out.println(entry.getKey() + " : " + entry.getValue());
        }*/
        
/*        Set<String> set=  map.keySet();        
        Iterator<String> it = set.iterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.descendingKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String key =it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
/*        NavigableSet<String> set  = map.navigableKeySet();
        //key의 내림차순 정렬
        Iterator<String> it = set.descendingIterator();        
        while(it.hasNext()){
            String key = it.next();
            System.out.println(key + " : " + map.get(key));            
        }*/
        
        
    }// end main
}// end class
 
cs

 

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
package com.javac.im;
 
import java.util.NavigableMap;
import java.util.TreeMap;
 
public class CollectionFramework4 {
 
    public static void main(String[] args) {
 
//        Map<String, Integer> map = new HashMap<>();
        NavigableMap<String, Integer> map = new TreeMap<>();
        //key의 오름차순(ascending sorting) 정렬(기본지원)
 
        map.put("노르웨이"14);
        map.put("독일"14);
        map.put("미국"11);
        map.put("네덜란드"9);
        map.put("한국"6);
 
        /*//Java 1.8ver : 함수형(람다 표현식)
        map.forEach((k,v)-> System.out.println(k+", "++ "개"));*/
        
        /*map.entrySet().iterator().forEachRemaining(x->System.out.println(x));*/
        
        /*map.entrySet().forEach(x->System.out.println(x));*/
        
        /*map.keySet().forEach(x->System.out.println(x));//key값만 나열*/
        
        map.keySet().forEach(x->System.out.println(x + " : " + map.get(x)));            
        
    }// end main
}// end class
 
cs

 

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
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
 
public class CollectionFramework5 {
 
    public static void main(String[] args) {
 
        List<String> list = new ArrayList<>();
        
        list.add("박준형");
        list.add("데니안");
        list.add("남근곤");
        list.add("윤계상");
        list.add("손호영");
        list.add("김태우");
        
/*        list.sort(new Comparator<Object>() {
            @Override
            public int compare(Object o1, Object o2) {                
//                return o1.toString().compareTo(o2.toString());//오름차순
                return o2.toString().compareTo(o1.toString());//내림차순
            }
        });
        list.forEach(x->System.out.println(x));*/
        //체이닝프로그램
        list.stream().sorted(Comparator.naturalOrder()).forEach(x->System.out.println(x));
        
        
    }// end main
}// end class
 
cs

 

감사합니다.

안녕하세요 엘체프 GG 입니다.

컬렉션프레임워크 Set 임돠.


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
package com.javac.im;
 
import java.util.HashSet;
import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NavigableSet;
import java.util.Set;
import java.util.TreeSet;
 
public class CollectionFramework2 {
    public static void main(String[] args) {
        
        
//        Set<String> set = new HashSet<String>();//hashset
//        Set<String> set = new TreeSet<String>();//Treeset 기본 오름 차순정령(ASC)
        NavigableSet<String> set = new TreeSet<String>();; 
        
        
        set.add("남근곤");
        set.add("강타");
        set.add("문희준");
        set.add("장우혁");
        set.add("남근곤");
        set.add("토니안");
        set.add("이재원");
        set.add("남근곤");
        
        System.out.println("set의 크기 : " + set.size()); //중복을 허용하지 않는다.
        System.out.println("^___^");
        
        /*Iterator<String> it = set.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }*/
        
        /*set = set.descendingSet();//내림차순 정령(DESC)*/
        
        
        //낱개로 가져오는 방법은 배열로 치환해야한다.
        Object list[] = set.toArray();
        System.out.println(list[3]);
        
        
        System.out.println("^___^");        
        set.forEach(System.out::println);//람다식 함수형
    
        
    
    
    
    }//end main
}//end class
 
cs

 

감사합니다.

'스터디 > JAVA' 카테고리의 다른 글

스레드(Thread)  (316) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_3  (322) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_1  (302) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30

안녕하세요 엘체프 GG 입니다.

자바의 꽃 컬렉션 프레임워크 끄적여 볼 께요.

일딴 소스먼저 풀고 정리해야겠어요.




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
73
package com.javac.im;
 
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Iterator;
import java.util.List;
 
public class CollectionFramework1 {
 
    public static void main(String[] args) {
        
//        ArrayList list = new ArrayList();
        ArrayList<String> list = new ArrayList<String>();
        // <E> : elemert(요소)  -> 참조형Type(클래스,인터페이스...)
        //구성 요서 자료형 제한 -> 성능향상!
        list.add("윤성빈");
        list.add("김연아");
        list.add("남근곤");
        list.add("김영미");
        list.add("남근곤");
        list.remove(4);//5번째 지워~
        
/*        System.out.println("첫번째 애를불러~ " +list.get(0));        
        System.out.println("list의 크기능 : " + list.size());
        System.out.println("list : " + list);*/
        
/*        for(int i =0; i <list.size(); i++){
            System.out.println(list.get(i));
            
        }*/
        
/*        for(String s : list ){
            System.out.println(s);
        }*/
        
/*        //반복자(Iterator) 디자인 패턴 : GoF의 디자인 패턴 중 하나
        for (Iterator iterator = list.iterator(); iterator.hasNext();) {
            System.out.println( iterator.next());            
            
        }*/
        
        
/*        list.sort(Comparator.naturalOrder());//오름차순(ASC:ascending) 정렬(sorting)
//        list.sort(Comparator.reverseOrder());//내림차순(DESC:descending) 정렬(sorting)
        for(String s : list ){
            System.out.println(s);            
        }*/
        
/*        //함수형 프로그래밍(람다식)
        list.stream().forEach(x->System.out.println(x));
        list.stream().forEach(System.out::println);//자바에 없던표현들 
        list.stream().forEachOrdered(str -> System.out.println(str));//소스가 간결해진다.         
*/    
        Object objlist[] =  list.toArray();//배열로 변환
        for(Object o : objlist){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        //배열 -> List 변환
        List<Object> otherList = Arrays.asList(objlist);
        for(Object o : otherList){
            System.out.println(o);            
        }
        
        System.out.println("^---^");
        otherList.forEach(System.out::println);
        
    
    }//end main
}//end class
 
cs

감사합니다.

'스터디 > JAVA' 카테고리의 다른 글

자바 컬렉션프레임워크(CollectionFramework)_3  (322) 2018.02.27
자바 컬렉션프레임워크(CollectionFramework)_2  (296) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 for문 별찍기  (292) 2018.01.30
자바 2차원배열 성적구하기  (6) 2018.01.30

안녕하세요 엘체프 GG임돠

클래스안에 클래스 내부 클래스에 대해 끄적여 봅니다.

GUI어플리케이션(AWT,Swing)등의 이벤트 처리에 주로 사용되고 코드의 복잡성을 줄 수 있다.


-창뛰우기 1

자바에서 지원하는 WindowListener 사용 예제

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
73
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx8
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowListener() {//모두다 꺼네 써야한다.
      
        public void windowClosing(WindowEvent e) {
             e.getWindow().setVisible(false);
             e.getWindow().dispose();
             System.exit(0);
        }
    
        public void windowOpened(WindowEvent e) { }
        public void windowClosed(WindowEvent e) { }    
        public void windowIconified(WindowEvent e) { }
        public void windowDeiconified(WindowEvent e) { }
        public void windowActivated(WindowEvent e) { }
        public void windowDeactivated(WindowEvent e) { }
    
     }
   );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs

-창뛰우기 2

자바에서 지원하는 WindowAdapter 사용 예제


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
package com.javac.im;
 
 
import java.awt.*// JAVA 기본 GUI Component/Container ToolKit 
// ex) Button, Frame, Panel 등등
import java.awt.event.*// event = I/O device 현상  
// ex) 버튼(장치: device)을 누른다, 마우스(장치 : device)를 클릭한다.
// GUI Component(버튼, 메뉴 등등)를 처리하는 방식
// 1. 장치(device -> Component) 이벤트(Event) 발생
// 2. 감지자(Listener) 가 대기 하고 있다가 이벤트 감지.
// 3. 핸들러(Event handler)가 이 이벤트를 처리한다.
 
class InnerEx9
{
 public static void main(String[] args) 
 {
  Frame f = new Frame();   // Component(컴포넌트)를 포함시킬 Container(컨테이너)를 추가한다.
  f.setSize(300200);        // 컨테이너의 크기를 설정한다.
  f.setLayout(new GridLayout(1,1));  // 레이아웃 매니저의 설정을 해제한다.
  
  Button b = new Button("Start");  
  b.setSize(200100);        // Button의 크기를 설정한다.
  f.add(b);                      // 생성된 Button을 Frame에 포함시킨다.
  f.setVisible(true);          // 화면에 보여지도록 설정한다. 
 
 // 만약 윈도우 닫기 버튼 "X"이 활성화(작동)되려면
 // 아래의 이벤트 리스너와 핸들러를 추가하면 된다.
 // 추가하지 않을 경우는 Ctrl + Alt+ Del 를 눌러서 프로세서 패널에서
 // javaw.exe를 프로세서 종료를 해야 창이 닫히게 된다.
 
  f.addWindowListener(new WindowAdapter() { //사용하고 픈거만 꺼네쓸쑤 있다.
 
    @Override
    public void windowClosing(WindowEvent e) {
         e.getWindow().setVisible(false);
         e.getWindow().dispose();
         System.exit(0);
    }
      
      
  } );
  
 
  // Event Listener(이벤트 리스너) , 간단하게 "리스너"라고 많이 부른다.
  // : 장치(device)에서 발생하는 I/O(입력/출력) 신호를 감지하는 "감지자"
  // 메소드의 매개변수가 들어갈 자리에 클래스가 들어감(내부 클래스)
  // -> 코드가 간결해짐 -> 성능 향상!
  // 이러한 디자인 패턴을 어댑터 패턴(Adapter pattern)이라고 한다.
  // 쉽게 말해서 어떤 프로그램에 다른 프로그램 코드를 일부분 처럼 (매개변수로) 끼워써서
  // 코드를 간결하게 줄이는 방식.
 
  b.addActionListener(new ActionListener() {
   
       // 이벤트 핸들러(Event Handler) : 이벤트 처리자
       // 실제로 프로그래머는 이 이벤트 처리자(핸들러) 안에서 
       // 오버라이드(override: 프로그래밍!) 하여 프로그램을 작성.
   
    public void actionPerformed(ActionEvent e) {
     
     // 이 부분이 프로그래머가 작성한(재정의:override) 부분
     System.out.println("ActionEvent occurred!!!");
    }
   } // 익명 클래스의 끝
  ); // 리스너의 끝
  
 } // main메서드의 끝
// InnerEx8클래스의 끝
cs


감사합니다.

안녕하세요 엘체프 GG 입니다.

for문을 활용한 별찍기 입니다.


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
package jse_ex_20180123_2;
 
public class Diamond {
    public static void main(String[] args) {
 
        // 상단 정삼각형을 출력하는 반복문
        for (int i = 0; i < 5; i++) {
            for (int j = i; j < 5; j++) {
                System.out.print(" ");
            }
            for (int j = 0; j < i; j++) {
                System.out.print("*");
            }
            for (int j = 0; j < i - 1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
        // 하단 역삼각형을 출력하는 반복문
        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < i; j++) {
                System.out.print(" ");
            }
            for (int j = i; j < 5; j++) {
                System.out.print("*");
            }
            for (int j = i + 1; j < 5; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
 
cs



감사합니다.


'스터디 > JAVA' 카테고리의 다른 글

자바 컬렉션프레임워크(CollectionFramework)_1  (302) 2018.02.22
자바 내부 클래스  (334) 2018.02.22
자바 2차원배열 성적구하기  (6) 2018.01.30
자바 반복문 성적내기  (8) 2018.01.30
자바 구구단 로직  (8) 2018.01.30

+ Recent posts