서버를 직접 mysql를 사용하여 회원 가입과 로그인 기능을 구현하겠습니다.

1. 서버설치

-xampp 검색 후 들어가거나 https://www.apachefriends.org/ 접속해서 각자 OS 맞춰 최신버전 다운로드한다.

-설치 시 다른 설정이 없으니 NEXT만 눌러 설치한다.

-설치가 완료되면 C 드라이브 및에 xampp 파일이 생성되어 있다 PC에 서버가 설치되었다.

-xampp폴더 안에 xampp-control 클릭하거나 검색에서 xampp 검색하면 panel을 클릭한다

- Apache, MySQL  Start버튼 눌러 가동시킨다.

-브라우저를 실행시키고 http://localhost/phpmyadmin/ 입력하면 아래 화면이 뜨면 서버가 정상 작동 중이다.

2. 테이블 생성

-데이터베이스를 먼저 만들어야 한다. 우측에 '새로운'을 클릭하고  새 데이터베이스 만들기에 유저정보를 넣은 데이터베이스명 'new_members' 라고 입력하고 만들기를 클릭 하면 새로 만들어진다.

-new_members가 만들어 졌으면 다음 테이블은 만들어야 한다. 우측에 새로만들어진 new_members 클릭 테이블 이름 입력라고 컬럼수를 넣는다 다음 만들기버튼을 클릭하면 상세 컬럼 이동 된다.

-필요 컬럼을 넣는다 아래 표와 같이 입력한다 . user_id 에 우측에 AI를 체크하면 pk 지정되고 자동으로 증가채번하여 ID를 준다.

회원가입 로그인에 필요한 DB생성 완료 했다.

Scouter는 오픈소스 apm(Application Performance Management)으로써 성능 요소를 모니터링하고 관리 application이다.
성능 정보는 일반적으로 Process CPU, Heap Memory, GC, Datasource ConnectionPool, ThreadPool, Request Time, Response Time, TPS등 다양한 정보를 본인이 원하는 정보를 선택하여 모니터링 할 수 있습니다.
대량의 데이터가 수집 되고 상세 프로파일링을 수행하여 특정 메소드, 수행 쿼리 지정 구분 하여 모니터링이 가능하다.

참조 자료

youtu.be/iuArTzsD7Ws?t=15

gunsdevlog.blogspot.com/2017/07/scouter-apm-1.html

 

-Scouter 다운로드

이 설치는 서버OSwindows 기준 입니다.

1.Scouter 릴리즈 페이지에서 최신버전을 다운 받는다.

https://github.com/scouter-project/scouter/releases

2. scouter-all-[version].tar.gz 을 받는다.

-Scouter CollectorAgent를 포함하는 압축 파일입니다.

받아서 서버에 C:드라이브에 둡니다.

3. scouter.client.product-[os].tar.gz 을 받는다.

- Client(Viewer) 프로그램입니다. 내가 모니터링할 내컴퓨터 에 둡니다.

 

-Scouter Server 설치 및 가동

1.서버에 scouter-all-[version].tar.gz 의 압축을 풀어줍니다. 압축을 푼 Scouter 폴더만 C: 드라이브 위치에 둡니다.

2.서버에서 CMD 창을 열고 scouter 디렉터리에 server 디렉터리 로 접근해 start.bat 를 쳐서 실행 해주면  scouter server 모듈이 기동 됩니다.

3.CMD창에 netstat -an|find "6100"  치서 아래와 같이 나오면 정상기동 확인 된 것 입니다.

 

 

- Scouter Client 실행

1.내컴퓨터 아무 곳에 scouter.client.product-[os].tar.gz의 압축을 풀고 실행합니다.

2. 접속할 Scouter ServeIP나 도메인을 입력합니다.기본 포트는 6100, IDPassword를 입력합니다

. 기본값 : admin / admin

3. Collector에 접속되면 좌측 상단의 Object-View에서 Collector 서버 하나가 있는 것을 확인할 수 있습니다.

 

-Scouter Agent 실행

1.Host Agent 실행 전에 먼저 Collector 접속 설정이 필요 해당 위치 - [scouter-dir]/agent.host/conf/scouter.conf 파일을 편집기로 열어 net_collector_ip에는 Collector 접속 IP나 도메인을 기입

2.Host Agent를 시작한다. -CMD를 열어 scouter 디렉터리에 agent.host 디렉터리 로 접근해 host.bat 를 쳐서 실행 해주면 Host Agent 수행 됩니다.

3.Host Agent가 잘 실행되었다면, 앞에서 실행한 Scouter Client에서  Object view 에 하위가 뜬다 저기 %CPU점유량이다.

4.Client메뉴중 환경설정(Windows -> Preferences) 메뉴로 들어가서 default ‘Host’ windows default ‘javaEEtomcat으로 설정한다. 그럼 CPU 모니터링이 가능하다.

 

-Java Agent 실행 (이클립스 톰캣실행시)

Java Agent는 단독으로 실행되는 것이 아니라, 모니터링할 Java Program이 실행될 때 attach되어 모니터링을 수행합니다. 따라서 실행하는 Java Program에서 scouter agent를 인식할 수 있도록 명령 행 옵션을 설정해야 합니다.

톰캣시 시작 하는 곳에 자바설정을 잡아 주면 된다.

1.테스트 서버는 이클립스에서 톰캣을 실행 시켜주니 이클립스 서버부분에서 설정 부분을 해준다.

2.Servertomcat부분 더블클릭 하면 페이지가 뜬다. 다음 Open launch configuration 을 클릭해 edit가 뜨면 Arguments탭에 가운데 VM arguments 부분에 해당 자바설정 부분을 넣는다.(경로확인후)

 -javaagent:"C:\scouter\agent.java\conf\scouter.agent.jar" 

-Dscouter.config="C:\scouter\agent.java\conf\scouter.conf"

-Dobj_name=scouterapptestWeb

3. 서버를 재시작 한다. 그럼 view 에 모든 데이터가 보이기 시작한다.

 

-Java Agent 실행

Java Agent는 단독으로 실행되는 것이 아니라, 모니터링할 Java Program이 실행될 때 attach되어 모니터링을 수행합니다. 따라서 실행하는 Java Program에서 scouter agent를 인식할 수 있도록 명령 행 옵션을 설정해야 합니다.

톰캣시 시작 하는 곳에 자바설정을 잡아 주면 된다.                                                      

-1.설치 톰캣

. Tomcat  bin 경로로 가서 Tomcat8w 클릭하며 Properties 가 뜨면 java 탭에 가운데 Java Options 에 아래   설정을 붙여 넣는다. (경로확인해보고)

-2.비 설치 톰캣

Tomcat  bin 경로로 가서 Catalina.bat 편집하기해 “JAVA_OPTS”부분에 뒤쪽으로 아래   설정을 붙여 넣는다. (경로확인해보고)

 -javaagent:"C:\scouter\agent.java\conf\scouter.agent.jar" 

-Dscouter.config="C:\scouter\agent.java\conf\scouter.conf"

-Dobj_name=scouterapptestWeb

3. 서버를 재시작 한다. 그럼 Client view 에 모든 데이터가 보이기 시작한다.


이렇게 하면 모니터링이 가능하다. 짜잔!!! 

 

이제 scouter 뷰 켜놓고 이상 있으면 확인 하면 된다!! 

 

감사합니다.

안녕하세요
엘체프 입니다

 su명령어로 루트계정 접속
passwd입력
한번더 입력
*짧으면 오류 나옴

■ 에디터에서 세미클론(;)으로 분리된 쿼리 실행

Ctrl + Enter (Ctrl키 +  Enter키)


■ 세미클론(;)으로 분리된 쿼리  다중(여러개) 실행

Ctrl + Shift + Enter (먼저 실행하고자 하는 쿼리들을 마우스로 선택한 다음 Ctrl키 + Shift키 + Enter키)


■ 새로운 쿼리 에디터 열기

Ctrl + T (Ctrl키 + t)


■ 저장된 스크립트파일(*.sql)파일 열기

Ctrl + Shift + O (Ctrl키 + Shift키 + o)


■ 쿼리를 보기 좋게 정렬

Ctrl + B (Ctrl키 + b)


■ Reverse Engineer Database

Ctrl + R (Ctrl키 + r)



[문제해결] Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use.



1. 문제상황> 개발중 비정상적인 was 종료로 인해 다음과 같은 에러와 함께 재시작 되지 않는다. 실 운영환경에서도 이런경우가 있다.


port_error

Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost are already in use. The server may already be running in another process, or a system process may be using the port. To start this server you will need to stop the other process or change the port number(s).

2. 문제확인

> was 재시작을 위한 포트가 이미 사용중이기 때문이다.


3. 문제해결

> 다음과 같이 포트를 사용하고 있는 pid를 확인하여 강제 종료 시켜준다.

001
> netstat -a -n -o -p tcp

port_check
> – 포트를 사용중인 pid는 4444 이다

001
> taskkill /f /pid 4444

port_kill
> – 해당 프로세스가 종료되었다. 다시 포트를 확인해본다.

001
> netstat -a -n -o -p tcp

port_recheck
> – 이제 포트를 사용할 수 있게 되었다. was를 시작하면 에러가 발생하지 않는다.


프로젝트 만든후 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 선택 -> 끝



lg프로젝트에서 결제파트 휴대폰을 담당하면서 라우터 스위치 허브 라는 단어를 종종 들었다.

하지만 그게 먼지 이해가 안됬다 부장님이 설명하기로는 통신이 오가는 길에 스위치라는 정도 누군가  정리를 잘해 놓아서

퍼놓았던거 올립니다.

출처를 잃어버려서 그냥 올릴께요. 


네트워크와 인터넷의 원리는 다음과 같은 발달 과정으로 이해하면 쉽다.
허브 → 스위치 → 라우터 → 인터넷
Hub → Switch → Router → The Internet

허브 : 허브는 패킷을 받으면 그것을 자신에게 연결된 모든 디바이스에게 무조건 보낸다.
각각의 디바이스들은 그 패킷이 자신에게 온 것인지를 판단해야 한다. 자기가 받은 것을
무조건 자신의 로컬 네트워크 상에 다시 보내는 멍청한 기계이므로 트래픽 부담이 크다.
이러한 허브는 '브릿지'라고 불리기도 했다. 

스위치 : 스위치는 허브보다 좀더 똑똑하다. 스위치는 자신에게 연결된 디바이스들의
IP 와 MAC 주소를 테이블로 모두 가지고 있다. 따라서 패킷이 자신에게 오면 그것의
목적지가 어디인지를 파악하여 그 디바이스에게 패킷을 보내준다. 트래픽이 훨씬 효율적
이 되는 것이다. 다만 스위치는 자신의 테이블에 없는 목적지를 가진 패킷이 오면
그것을 무조건 모든 기계에 포워딩한다. 즉 이런 경우는 허브와 똑같이 동작하는 것이다.

라우터 : 라우터는 이들 중 가장 똑똑한 기계이다. 라우터는 자신에게 연결된 디바이스들의 
주소를 갖고 있다는 점에서는 스위치와 같으나 추가로, 네트워크 상에 자신과 연결된 가장 
가까운 라우터의 주소도 갖고 있다. 이것을 '디폴트 게이트웨이' 로 프로그램해둘 수 있다.
라우터는 자신의 테이블 상에 없는 주소가 목적지인 패킷을 받으면 그것을 디폴트 게이트웨이
로 포워딩한다. 이것이 인터넷에서 데이터가 움직이는 기본 원리이다.
또한 라우터는 스위치와 달리 패킷의 source address 를 볼 수 있다. 즉 그 패킷이 로컬 
네트워크 안쪽에서 발생한 것인지 바깥쪽에서 발생한 것인지 구분할 수 있다는 얘기다.
별것 아닌 것 같아 보이지만 이는 큰 차이이다. 스위치만으로는 인터넷을 구성할 수 없지만
라우터로는 바깥쪽의 네트워크와의 연결을 통해 인터넷을 구성할 수 있기 때문이다.

인터넷 : 인터넷을 극단적으로 표현하면 '라우터들의 모임'이라고 볼 수 있다. 
인터넷은 여러 네트워크의 연결로, 네트워크 A 와 네트워크 B 가 연결된다고 할때 
네트워크 A 측의 라우터와 네트워크 B 측의 라우터가 연결되는 식으로 연결되고
그러한 연결이 무수히 많아진 것이 인터넷인 것이다.

부연 : 여기서 설명한 허브, 스위치, 라우터는 가장 원초적인 정의상의 설명임.
즉 여기서의 스위치는 L2 스위치를 의미. L3 이상의 스위치는 사실 순수한 스위치라고 보기가 힘듬.
예를 들어 이미 2000년 초반 스위치에 L3 기능이 얹어지면서 라우터와 스위치의 경계가
모호해진 바도 있으므로 실제 생산되는 제품의 세계에서 이들 설명이 그대로 적용되는 것은 아님.


감사합니다.

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

SCOUTER Windows 설치 가이드 및 사용 방법  (2473) 2020.07.16
리눅스 root 비밀번호 변경  (1284) 2019.01.16
L2, L3, L4, L7 스위치란 무엇인가?  (967) 2018.08.08
정보처리기사 알고리즘 기초  (7) 2018.05.09
보험사 업무 프로세스  (4) 2018.03.07

질문 : 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


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

감사합니다.

+ Recent posts