이 페이지에서는 JSP 에서 오라클을 활용한
MVC Model1 패턴의 활용 방법에 대해서 정리하고자 한다
오라클을 활용하기 위해선 당연하게도
Oracle Developer가 필요하다.
미리 설치해두도록 하자.
그 후 잔세팅(검색을 활용하자)을 끝낸다
가장 먼저 할일은 오라클 데이터베이스의 라이브러리를 가져오는 일이다.
오라클 데이터베이스의 라이브러리는
오라클 데이터베이스 설치 폴더에서 찾을 수 있다,
기본 설치경로는 위와 같을 것이다.
각자 맞는 버전의 jar 파일을 가져오면 된다.
나는 ojdbc6_g.jar를 가져왔다,
이클립스의 경우
이 경로에 복사 붙여넣기만 해도
큰 문제없이 라이브러리를 가져와 참조할 수 있다.
근데 intellij idea 의 경우
이게 안된다.
이렇듯 라이브러리를 참조하지 못해서 모든 코드가 에러가 나게 된다.
직접 추가가 필요하다.
file의 project structure 에 들어간 후
jar 파일 추가를 선택하고
lib 폴더에 붙여넣기 한 파일을 참조한다.
이 과정을 끝나면 아까 오류가 났던 부분이 모두 사용 가능하게 바뀐다
밑 준비는 끝났다.
이제 산더미같은 코드칠 일만 남았다
먼저 이러한 클래스를 만들 필요가 있다
위에서 부터
Member는 데이터를 저장할 모델 클래스
MemberDao는 Imple 클래스를 구현화할 인터페이스
OracleJdbc는 오라클 접속에 필요한
아이디, 비밀번호, 호스트 아이피 문자열을 저장하기 위한 인터페이스 클래스이다.
(인터페이스는 말그대로 문자열과 모델의 뼈대만 잡았으니, 설명에서 제외하도록 한다)
밑의 jar 파일은 앞서 설명한 라이브러리 추가를 위한 파일이고
member-register 는 간단한 회원 정보를 입력받을 인터넷 페이지를 구현하는 jsp
result 는 그 정보의 확인을 알릴 jsp이다.
여기서는 컴퓨터가 처리하는 순서대로 차근차근 순서대로 가보자
먼저 데이터를 입력받을 jsp에서 시작한다
간단한 방식의 회원가입 페이지이다.
코드는 이렇게 된다.
<h1>회원 가입 양식</h1>
<form action="member-reg-result.jsp" method="post">
<input type="text" name="userid" placeholder="아이디 입력" required/>
<br/>
<input type="password" name="pwd" placeholder="비밀번호 입력" />
<br/>
<input type="email" name="email" placeholder="이메일 입력" required />
<br/>
<input type="submit" value="회원 가입" />
<input type="reset" value="취소"/>
</form>
form 형식을 이용했다.
여기서 데이터를 입력하고, 회원가입을 누르게 되면
action에서 설정한 member-reg-result.jsp 페이지로 이동하게 된다.
(사실 이메일에 한글 못쓴다. 스샷 다시 찍기 귀찮아서 걍 냅둠 ㅋ)
result.jsp 페이지의 코드는 이렇게 된다.
<body>
<h1>회원 가입 결과 페이지</h1>
<%
// 요청 파라미터의 값을 읽음
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("userid");
String pw = request.getParameter("pwd");
String email = request.getParameter("email");
// Member 객체 생성
Member m = new Member(id, pw, email);
// 영속성 계층(DAO)의 insert() 메소드 사용
MemberDaoImple dao = MemberDaoImple.getInstance();
int result = dao.insert(m);
if(result == 1){
out.print("<p>"+m.getUserid()+"가입 성공</p>");
} else {
out.print("<p>"+m.getUserid()+"가입 실패</p>");
}
%>
</body>
여기서 사용된 메소드는
request의 인코딩을 하기 위한 메소드
이전 jsp에서 보낸 데이터를 받기 위한 getParameter 메소드
MemberDaoImple의 싱글톤 메소드이다.
싱글톤을 기반으로 설정한 insert 메소드이다.
MemberDaoImple의 코드를 보도록 하자
public class MemberDaoImple implements MemberDao{
// singleton 디자인 패턴 적용
public static MemberDaoImple instance = null;
private MemberDaoImple(){}
public static MemberDaoImple getInstance(){
if(instance==null){
instance = new MemberDaoImple();
}
return instance;
}
@Override
public int insert(Member m) {
int result = 0;
Connection conn = null;
PreparedStatement pstmt = null;
// 1. JDBC 드라이버 로딩
try {
DriverManager.registerDriver(new OracleDriver());
// 2. Connection 설정
conn = DriverManager.getConnection(URL, USER, PASSWD);
// 3. Statement 작성
pstmt = conn.prepareStatement(SQL_INSERT);
pstmt.setString(1, m.getUserid());
pstmt.setString(2, m.getPwd());
pstmt.setString(3, m.getEmail());
// 4. SQL 문장을 실행
result = pstmt.executeUpdate();
// 5.
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return result;
}
맨 윗줄은 주소를 일원화 시키기 위한 싱글톤메소드이다.
싱글톤 방식의 메소드를 여기서 설명하기에는 적합하지 않으니
싱글톤은 검색을 통해 알아보도록 하자
insert에서는 데이터베이스에 접근하고 데이터를 추가하기 위한 메소드이다.
(편의를 위해 여기서는 데이터베이스 로그인, 접근 + 저장 기능을 동시에 insert 메소드에 저장했다.)
DriveManager를 통해 데이터베이스를 등록해주고
getConnection을 통해 데이터베이스와 연결한다.
그 후 PreparedStatement 를 통해 매개변수로 받은 데이터를 데이터베이스로 전달해주는 구체화 작업을 한다.
SQL_INSERT의 문자열은 이렇게 설정했다
String SQL_INSERT =
"insert into test_member values(?, ?, ?)";
즉 매개변수로 받은 id, password, email을 ?,?,? 부분에 나누어서 데이터베이스에 제공해주려는 준비를 하려는 것이다.
그 후 executeUpdate 메소드를 통해서
데이터베이스에 전해주도록 한다.
오라클데이터베이스는 성공시 int 값 1을 리턴하고 실패시 0을 리턴하기에
미리 int 변수를 설정해주고
리턴 결과를 변환에 활용하도록 하자.
그 후 데이터베이스에 접근하기 위해 열어 두었던
통로를 역순으로 닫아준다
이 모든 과정은 try catch나 throw 문을 사용하지 않는다면 에러가 날 것이다
throw를 사용하거나 try catch로 묶어주자
이 모든 과정을 성공적으로 수행했다면
에러없이 데이터베이스에 접근 후 저장, 종료를 수행했을 것이다.
그리고 jsp 파일을 뛰운다
여기서 result.jsp 코드를 한번 더 살펴보자
// 영속성 계층(DAO)의 insert() 메소드 사용
MemberDaoImple dao = MemberDaoImple.getInstance();
int result = dao.insert(m);
if(result == 1){
out.print("<p>"+m.getUserid()+"가입 성공</p>");
} else {
out.print("<p>"+m.getUserid()+"가입 실패</p>");
}
오라클 데이터베이스가 반환한 리턴값이 1(성공)이라면
가입성공의 문자열
실패(else문, 리턴값은 0이다) 한다면 가입실패의 문자열을 띄운다.
가입이 성공했다.
데이터베이스를 확인하도록 하자
성공적으로 추가된 모습을 확인할 수 있다.
끗
'프로그래밍 > Web' 카테고리의 다른 글
MVC Model2 패턴 / 간이 게시판 제작 기록 (1/4) (0) | 2017.11.11 |
---|---|
JSTL 정리 (2/2) (0) | 2017.11.11 |
JSTL 정리 (1/2) (0) | 2017.11.11 |