mvc

ㅇ.ㅇ·2022년 6월 17일

자바

목록 보기
5/6

model
controller

  • 어플리케이션의 행위를 정의
    view
  • model 데이터를 기반으로 실제 사용자에게 보여지는 페이지

-> 세 영역으로 구분하고, 영역간 결합도를 최소화

Model1
웹 어플리케이션을 개발할 때 JSP만을 사용 하는 설계방법
클라이언트의 요청처리, DB 연동,
세션 관리, 응답 처리 등과 같은 작업을 JSP만으로 구현하는 방법

Model2
Client -> controller -> model dao/vo
controller -> view -> client

Presentation Logic과 BusinessLogic 처리를 명확하게 분리

Model1 Model2 차이

  • model1
    view와 controller가 같은 jsp에서 실행
    개발기간 단축

  • model2
    view와 Controller가 엄격히 구분
    View는 어떠한 처리 Logic도 포함x


alt x 누르면 해당문 실행

DTO


package Model;

public class DTO {
	//DTO: Data Transfer Object 데이터 전달 객체
	//	 : 보통 테이블형태를 그대로 따라감
	private String id;
	private String pw;
	private String name;
	
	// 생성자 메소드 -> 데이터를 담는가방
	// 생성자 : 객체를 초기화 하기 위한 메소드
	// this : 현재 객체
	
	public DTO(String id, String pw, String name) {
		//전역변수 확실히 지정하기 위해서 this를 사용함
		this.id = id;
		this.pw = pw;
		this.name = name;
	}
	
	//getter setter
	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;
	}
	
}

dao

package Model;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DAO {
	// DAO : Data Access Object => db에 접근하는 객체

	// 회원가입 기능
	// 회원가입 : 입력받은 데이터를 회원table에 삽입
	// sql : insert into Member values(id,pw,name)
	public int join(String id, String pw, String name) {
		// jdbc api
		// DB랑 join메소드랑 연결 -> OracleDriver라는 클래스가 필요

		// 1. Oracle에서 제공하는 ojdbc6.jar 라이브러리 import해야함
		// 프로젝트 webapp - web-inf - lib 폴더에 넣기

		// 2. DB연결을 도와주는 class 불러오기
		// 3. DB접속하기 위해서 카드키 설정
		Connection conn = null;
		PreparedStatement psmt = null;
		int row = 0;
		
		try {
			// OracleDriver : DB-Java 사이에 통로를 만들어주는 역할
			Class.forName("oracle.jdbc.driver.OracleDriver");

			// 3-1. DB접속하기 위해서 카드키 설정(주소, 계정, 비번)
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String db_user = "hr";
			String db_pw = "hr";

			// 3-2. 카드키로 DB에 접속 -> 접속 성공 시 Connection객체로 반환
			conn = DriverManager.getConnection(url, db_user, db_pw);
			
			// 4. sql문장 작성 : DB연결 후 행할 행위
			// ? : 바인드변수 -> 계속 변하는 값
			String sql = "insert into Member values(?,?,?)";
			
			//5.sql문을 DB에 전달 -> 전달 성공시에는 PrepareStatement 객체로 반환
			psmt = conn.prepareStatement(sql);
			
			//6. ?에 값 채우기 -> sql문장 온전하게 만들기
			// psmt.set데이터타입(몇 번째 물음표인가?, ?에 들어갈 값);
			psmt.setString(1, id);
			psmt.setString(2, pw);
			psmt.setString(3, name);
			
			// 7. sql문 실행
			//excuteUpdate : select 구문을 제외한 모든 구문을 수행할 때 사용
			// int형태로 반환하는데 -> 숫자의 의미는 몇개의 행이 변화되었는가(1 row affected)
			row = psmt.executeUpdate();
			
			
			
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
		finally {
			// 8. DB연결 종료
			// psmt, conn, try문 안에 선언-> 전역변수로 만들어주기
			// 열리지 않은 객체를 Close하라고 하면 오류가 나기 때문ㅇ
			// 꼭 null이 아닐때만 Close실행
			try {
				if(psmt != null) psmt.close();
				if(conn != null) conn.close();
			} 
			catch (SQLException e) {
				e.printStackTrace();
			}
		}

		return row;
	}
}

profile
기록과 정리하는것을 계속해서 하려고 노력중이에요 😊

0개의 댓글