프로젝트 만든후 jsp파일 만들었을때 빨간줄이 가있다.

에러를 확인하니


The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

이런 메시지가 보인다.


해결 : 프로젝트 우클릭 -> Build Path -> Configure Build Path...-> Libraries 탭 -> add library 

-> server runtime -> was 선택 -> 끝



질문 : L2, L3, L4, L7 스위치란 무엇인가?
요약 : L2, L3 등은 OSI의 7 레이어 중 어떤 레이어에서 수행되는가에 따라 정의된 분류이다.

설명 : L2 Switch 
가장 원초적인 형태의 스위치는 L2 스위치이다.
원래 스위치의 정의에 가장 부합하는 것이 L2 스위치이므로 
L2 를 그냥 스위치라고 부르기도 한다. 스위치는 허브에서
한단계 진화한 것일 뿐으로(허브와 스위치가 무엇인지 보려면 여기로), 
패킷이 왔을때 그것의 목적지가 어디인가를 보고 그 목적지로 
보내주는 역할만을 한다. 말 그대로 '스위치'일 뿐이다. 
이는 레벨 2에서 동작하므로 목적지는 Ethernet 주소로 이해한다. 
즉 IP 주소가 필요한 외부로 보내줄 수 없다. 

설명 : L2 Switch 의 한계 
OSI 7 layers 에서 2 레벨은 data link 레이어이므로, 
L2 스위치는 Ethernet 레벨에서 동작할 뿐 그 상위 레이어인
네트워크 레이어에서 동작하는 IP 등을 이해하지 못한다.
다시말해 IP 어드레스를 이해하지 못하므로 라우팅이 불가능하다
(Route 라는 것이 외부와 연결되므로 IP 어드레스를 알아야 함을 기억하면 이는 당연)

설명 : L3 Switch 
L3 에서는 3 레이어의 프로토콜인 IP 등에서 스위칭을 수행하므로
자신에게 온 패킷의 destination 이 외부에 존재하는 IP 일 경우
그 패킷을 외부에 연결된 라우터로 보내줄 수 있다. 즉 L3 스위치는
라우터 기능도 갖고 있기 때문에 라우터와의 경계가 모호해진다.

설명 : L4 Switch 
L4 에서는 4 레이어의 프로토콜인 TCP/UDP 등에서 스위칭을 수행하므로 
TCP와 UDP 등의 헤더를 보고 그것이 FTP 인가 HTTP 인가 SMTP 인가를
보고 어떤 것을 우선시해서 스위칭할지 판단할 수 있다. 즉 로드 밸런싱이 
가능해진다는 얘기인데 이는 L3 이하에서는 불가능한 것이다. 

설명 : L7 Switch
L7 스위치는 OSI 의 7 레이어 즉 어플리케이션 레이어에서 동작하는 것으로
이를테면 이메일의 제목이나 문자열을 보고 내용을 파악한다거나 
HTTP 의 URL, 또는 FTP의 파일명, 쿠키 정보, 특정 바이러스의 패턴 등을
분석해서 보안에 더욱 유리하고 더욱 정교한 로드 밸런싱이 가능해진다.
사실 어플리케이션 레벨의 데이터를 다 다룬다는 것은 불가능하고
L7 스위치는 단지 패킷의 내용을 조금 더 참조하여 약간 intelligent 한
결정을 내릴 수 있게 된 것 뿐이다. 쉽게말해 L7 스위치라는 것은 마케팅용어라고
볼 수 있다.

부연 : 
상위 레벨에서 동작하는 스위치는 자신의 하위 레벨 스위치의 기능을 다 갖고 있다.
예를 들어 L4 스위치는 L3, L2 스위치의 기능도 다 수행할 수 있다.


출처 ... 정리잘된거 보관만하다가 어디서 퍼왓는지 까먹었네요...



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

정처기 수업시작한지 벌써 절반이 넘었네요.

전 7월달 셤이라 여유가 있지만 공부를 해야하는데... 큰일이네요..

무튼 필기수업 끝나고 실기시작했는데. DB는 그래도 실무있었다고..ㅋ 쬐금 알고있드라고요..ㅋㅋ

제일중요한 알고리즘!!! 시작했어요. 


이런 모든 파일이 pdf 파일이네요. 하나하나 정리해서 올려야하겠네요.

수업 내내 올리려 했더니...


파일은 10MB 뿐이 안되네요 이렇게 작은 용량도 안됬었다니...


하... 망이다... 올만에 공부 한거 올리려했는데...

시험 접수하면 밤샘공부 시작될 때 다시 정리해서 올려야겠어요.

수업 열심히 들어야 겠네요. 

빠빠염!



안녕하세요 엘체프 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 임돠.

컬렉션프레임워크 마지막 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 입니다.

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

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




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 입니다.

자주 쓰고 나오는 단어를 정리 하려합니다. 


O.통신

-프로토콜 : 사전적의미 ->  컴퓨터나 원거리 통신 장비 사이에서 메시지를 주고 받는 양식과 규칙의 체계

-TCP : 사전적의미 -> 전송 제어 프로토콜(Transmission Control Protocol, TCP 전송조종규약)은 인터넷 프로토콜 스위트(IP)의 핵심 프로토콜 중 하나로, IP와 함께 TCP/IP라는 명칭으로도 널리 불린다.



O.언어




O.비지니스 

-ASIS , TOBE  실무와서 제일 처음 듣었던 단어 asis-tobe 인듯 싶네요 asis는 현제와과거 소스(시스템) 이고 tobe는 미래 개선후의 소스(시스템)을 말하는 거였어요.

-전자구조개선프로젝트 프로세스 : 

1. Servlet Filter : Request에 대한 Servlet 처리 이전에 공통기능 처리 수행 

2. DispatcherServlet : Spring F/W 에서 제공하는 공통 Servlet으로 MappingHandler를 통해 Request를 처리할 Controller를 Mapping 해준다

3. Handler Mapping : Request에 해당하는 Controller를 검색하여 Servlet으로 전달

4.Interceptor : Controller에 대한 처리 이전에 선/후행에 대한 공통 기능 처리 수행

5.Controller : Client로 부터의 Request를 Parsing,Validation,BizLogic 수행및 처리 결과를 Client로 반환하는 역활 수행

6. Servide : Business Logic을 포함하고 있으며, DAO를 호출하여 DBMS에 대한 CRUD(create,read,update,delete)를 수행함

7. CommonDAO : SQL를 호출하여 그 결과를 반환하는 역할을 수행하며, 본 Famework에서는 CommonDAO를 통해 수행함

8. SQL: DBMS에 대한 CRUD 등을 담은 SQL을 Mybatis기반으로 XML 파일을 생성, 반복적인 DAO 작업을 자동화한 컴포넌트 코드로 부터 SQL을 분히라고 쿼리 실행의 In/Out 객체 바인딩/매핑 지원

9. View : 모델이 가진 정보를 다양한 방식으로 화면에 출력

10. View Resolver : View name에 해당하는 View를 찾아 Dispatcher Servlet으로 전달

11. Inbound Gateway : 대내 시스템등으로 부터 TCP 기반 연계 요청을 처리하기 위한 진입점

12. Service Activator : TCP기반 연계 요청 시, 요청 전문을 Parsing하여 VO로 변환하고, 이를 이용하여 Service를 호출하기위한 역활 수행




+ Recent posts