Model : 뷰에 출력할 데이터를 담아둠 (실행에 직접적 관여 X)
View : 모델에 담겨있는 데이터를 사용해서 화면에 그리는 일을 하는데, HTML을 생성하는 부분
Controller : HTTP 요청을 받아서 파라미터를 검증하고, 비즈니스 로직을 실행합니다. 그리고 뷰에 전달할 결과 데이터를 조회해서 모델에 담습니다.
package Model;
public class DTO {
// 사용하고자 하는 데이터의 설계를 정리하는 부분
private String id;
private String pw;
private String name;
// 생성자 메소드 - 회원가입용
public DTO(String id, String pw, String name) {
this.id=id;
this.pw=pw;
this.name=name;
}
// setter / getter 메소드 생성(Alt+Shift+S)
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
package Model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class DAO {
// 데이터베이스 연결을 위한 로직 작업
Connection conn=null;//(1-2) 전역변수 작업
PreparedStatement psmt = null;//(2)
ResultSet rs = null;//(2)import 작업
int result= 0; // 결과값 전체적으로 사용하기위한 전역변수 선언
// 1. 데이터베이스 연결 메소드 만들기(만든 후 try/catch 로 잡아주기)
public void getCon( ) {
try {
// 1-1 드라이버 연결
Class.forName("oracle.jdbc.driver.OracleDriver");
// 1-3 심부름꾼 권한 부여
String db_url ="jdbc:oracle:thin:@localhost:1521:xe";
String db_id ="c##오라클ID";
String db_pw ="오라클 비밀번호";
// 1-2 왔다갔다 할 수 있는 심부름꾼 생성(import작업!)
//conn- 전역에서 사용해야하기때문에 전역변수 미리선언
conn = DriverManager.getConnection(db_url,db_id,db_pw);
// *catch문 Exception 통일후 하나만 작성가능*
} catch (Exception e) {
e.printStackTrace();
}
}
// 2. DB 연결을 종료하는 메소드 -> 사용 객체의 역순으로 닫기!
public void close() {
// rs,psmt,conn이 사용됐다면 null값이 아니기때문에
//여기서도 try/catch 사용try안으로 if문넣기
try {
if(rs != null) {
rs.close();
}if(psmt != null) {
psmt.close();
}if(conn != null) {
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// 3. 회원가입을 위한 메소드 생성
public int join(DTO dto) {
// getCon 연결
getCon();
// 무엇이 들어올지 모르기때문에 일단 ? 채워넣기
String sql = "INSERT INTO MEMBERINFO VALUES(?,?,?)";
// sql 문법 작성에서도 문제될수도 있으니 try/catch 사용
try {
// 심부름꾼 일시키기
psmt =conn.prepareStatement(sql);
// ? 값을 채워줘야 하니 데이터 집어넣는 작업
// dto안에 3개 있기때문에 각각 집어넣기 위한 작업
psmt.setString(1,dto.getId());
psmt.setString(2,dto.getPw());
psmt.setString(3,dto.getName());
// sql 실행 메소드
// - excuteQuery() : 데이터가 바뀌지않는다면,ex)조회(select)..
// - excuteUpdate() : 데이터가 바뀐다면, ex)삽입,수정,삭제..
result =psmt.executeUpdate();// int형으로 결과값 확인가능
// 회원가입 위한 메소드 join 실행하기위해 result 사용,지역변수이기 때문에미리 result 선언해주기
} catch (SQLException e) {
e.printStackTrace();
}
//catch 기준으로 추가(닫아줘야하기때문)
finally {
close();
}
return result;//맨 마지막에 선언
}
// 1. 드라이버 동적로딩 -> Class.forName()
// 2. DB 연결
// 3. SQL문 작성 및 전송
// 4. 사용 객체 닫아주기
}