서블릿에 데이터 베이스를 연동해보는 예제이다.
서블릿에서 데이트 베이스로 연동 접근이 가능한 구문은 DML(INSERT,DELETE,UPDATE,SELECT)가 있는데
이 중 SELECT를 이용해 오라클 서버를 서블릿에 연동시켜서 만들어 둔 테이블을 서블릿에서 호출하는 예제이다🥳
연동을 위해서는 우선 오라클 데이터 베이스 프로그램 접속 테스트 창을 확인해야 한다.
호스트 이름과 포트 번호, SID 값이 연동에 이용되기 때문이다.
테이블이 있는 USER의 아이디와 패스워드도 필요하다.
데이터 베이스에서 테이블 생성, 데이터 삽입까지 마쳤으면 서블릿으로 이동해서 연동 시작!
** 데이터 삽입까지 마친 후 COMMIT을 꼭 해주어야 한다!
import 구문 확인하기
import java.sql.DriverManager; // 데이터 베이스를 자바(서블릿)에 적재하는 구문
import java.sql.Connection; // 데이터 베이스 연결(URL, ID, PW를 통해 접속)(로그인)
import java.sql.Statement; // SQL 구문을 전달하기 위한 객체 생성(데이터 송수신)
import java.sql.Resultset; // 결과 확인. DQL-SELECT 구문에서만 사용한다
import java.sql.SQLException; // 필수 구문. SQL 예외 처리
import java.util.List; // SELECT 구문(2차원 배열)을 담기 위해 사용
import java.util.ArrayList;
import 패키지.BEAN파일;
우선 위의 import 구문들을 먼저 상단에 적어주어야 한다.
오류 확인 구문 try catch
try{ 실행문;
}catch(Exception e){
e.printStackTrace();
}
데이터 베이스를 연동할 때는 오류에 대비해 try catch 구문 안에 적어주어야 한다.
try catch 구문은 try 안에 적은 실행문을 실행할 때 catch()에 작성한 오류가 발생하면
catch에 작성한 실행문을 실행하는 오류 확인 구문이다.
Exception은 모든 오류를 확인할 수 있는 구문으로
어떤 오류가 발생했는지 모를 때 사용해 오류명과 내용을 확인할 수 있다.
자바 파일에 데이터 베이스 파일 연동하기
public Connection initDatabase() { // Connection형 con을 반환하므로 자료형 Connection 작성
Connection con=null; // 이 변수를 return시켜 SELECT,INSERT 구문을 이용한다.
String id="C##ID"; // USER의 아이디와 패스워드를 보기 편하게 변수에 저장해둔다.
String pw="1234";
String url="jdbc:oracle:thin:@localhost:1521:xe"; // 서버의 호스트 네임과 포트 번호, SID 작성
try{
Class.forName("oracle.jdbc.OracleDriver"); // 오라클 파일을 서버에 적재하는 구문으로 형태가 고정된다.
System.out.print("오라클 서버 적재 완료");
con=DriverManager.getConnection(url,id,pw); // 서버 정보를 이용해 연결
System.out.print("오라클 서버에 접속 연결 준비 완료");
return con; // 모두 완료되면 con 반환
}catch(Exception e){
e.printStackTrace();
return null;
}
}
public void sql_con(){
// Connection Statement Resultset : try 구문이 제대로 실행되게 되면 null이 아니게 됨
// != null 시 close로 마지막에 닫아주기 위해 우선 null값으로 선언을 해준다
Connection con=null;
Statement state=null; //SQL <-> JAVA 데이터 전송 역할
Resultset result=null; // SELECT 결과 확인에 사용.
String sql="SELECT * FROM TABLE_A";
try{
con=initDatabase(); // 정보가 제대로 들어오면 오류X → 접속 완료
state=con.createStatement(); // 연결 준비 완료 제시
System.out.print("데이터 전송 준비 완료");
result=state.executeQuery(sql); // SELECT는 표 형태이므로 배열로 저장된다.
System.out.print("JAVA로 데이터 수신 완료");
// 자바빈을 이용해 값을 저장하고 반환해서 SELECT 구문 출력
List<DATABASE_BEAN> list = new ArrayList<DATABASE_BEAN>;
// DATABASE_BEAN은 set 구문으로 id,pw,add를 받아 get으로 반환하는 자바빈 페이지
while(result.next()){ // 저장된 데이터가 있으면 다음 데이터로 반복
DATABASE_BEAN BEAN=new DATABASE_BEAN; // 반복할 때마다 BEAN 객체 초기화
BEAN.setname(result.getString("NAME")); // NAME 필드의 레코드 저장
BEAN.setpw(result.getString("PASSWORD")); // PASSWORD 필드의 레코드 저장
BEAN.setadd(result.getString("ADDRESS")); // ADDRESS 필드의 레코드 저장
list.add(BEAN); // list에 객체 BEAN 저장 → 반복이 완료되면 2차원 배열 형태가 된다
}
for(int i=0; i<list.size(); i++{ // list는 for문을 사용해서 출력한다.
System.out.print(list.get(i).getname()); // 2차원 배열임에 유의해서 출력값을 확인한다.
System.out.print(list.get(i).getpw());
System.out.print(list.get(i).getadd());
}
}
catch(Exception e){
e.printStackTrace();
}
// 데이터 베이스 사용 유의점 : 모두 마치면 해당 서버를 셧다운해야 함(해킹 방지)
//con, state, result 뒤에 close() 작성
try {
if(result != null)
result.close();
if(state != null)
state.close();
if(con != null)
con.close(); }
catch(Exception e) {
e.printStackTrace();
}
}
// doGet에서 호출해서 실행
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
initDatabase();
sql_con();
}
}
😀.....!!
이렇게 적으면 SELECT 구문으로 요청한 TABLE_A 테이블의 모든 레코드들이 출력된다 !
끝 🌈
'JSP, SERVLET' 카테고리의 다른 글
[JSP, SERVLET] getAttribute과 getParameter, int형 변환하기 (0) | 2023.04.28 |
---|---|
[JSP, SERVLET] 데이터 베이스 연동해서 로그인 성공 구현하기 (0) | 2023.04.27 |
[JSP] 스크립트 태그(Script Tag)란? (0) | 2023.04.26 |
[JSP] JSP(Java Server Pages) 기초 개념과 특징, JSP 디렉티브 (0) | 2023.04.24 |
[JSP,SERVLET] JSP에서 보낸 데이터 SERVLET에서 쿠키로 저장하기 (0) | 2023.04.20 |