-
JSP-JDBC를 이용하여 글 목록 구현하기Servlet-JSP 2022. 1. 26. 21:20
**유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.
오늘은 JDBC를 이용하여 DB 연결을 하려고 한다.

표시한 부분을 데이터베이스를 이용하여 바꾸어보려고 한다.

저번에 JDBC 공부 할 때 사용했던 program이라는 파일에서
String url = "jdbc:oracle:thin:@localhost:1521/xepdb1"; String sql = "SELECT * FROM NOTICE"; Class.forName("oracle.jdbc.driver.OracleDriver"); //여기까지가 데이터베이스를 연결하기 위한 블럭이고 Connection con = DriverManager.getConnection(url,"sys as sysdba", "Ew170916!!"); Statement st = con. createStatement(); ResultSet rs = st.executeQuery(sql); //코드를 실행해서 결과를 얻어오는 블럭이다.요만큼을 복사 해 준다.

그리고 저 세가지 클래스는 close() 기능을 함께 써줘야하는데
close 코드는 html코드가 끝나는 맨 마지막 부분에 코드블럭을 생성해서 작성 해 준다.

close() 코드를 작성 해 주어도 계속 빨간줄이 그어져있는데 그 이유는 저 클래스들을 사용하려면 클래스가 속해 있는 패키지명을 전부 작성해주거나 아니면 import라는 구문을 통해서 넣어주어야 빨간 경고줄이 사라지게 된다..
근데 코드블럭에서는 import를 어떻게 해야하는지 모른다.
그때 어떻게 하면 되냐면 빨간 경고줄이 뜬 곳 끝에 마우스 포인터를 두고 ctrl+space 를 해 주면

이렇게 여러개의 패키지명이 뜨는데 우리는 표시한 java.sql을 클릭 해 준다. enter 키를 눌러도 된다.
이런식으로 나머지 경고줄이 뜬 클래스들도 import 해 주고 나면(전부 sql로 해 줘야한다.)

경고줄이 사라지는 것을 확인 할 수 있고 이제 사용 할 수 잇는 준비가 된 것이다.
그럼 이제 notice테이블에 있는 데이터를 resultSet을 통해서 가져 올 것이고 그것을 반복적으로 가져오도록 할 것이다.
그럼 이제 데이터를 출력해야하는 코드를 한번 수정해보자

기존에 for문으로 반복하던것을 지정 된 숫자가 아닌 notice가 가지고 있는 레코드 수 만큼 반복하기 위해 for문을 while문으로 바꾸어 주고 그냥 값을 입력 했던 것들을 코드블럭을 통해서 값을 가져 올 수 있도록 해준다.
바꾸어 준 후에 실행을 해보았는데

에러가 발생했다..
javax.servlet.ServletException: java.lang.ClassNotFoundException: oracle.jdbc.driver.OracleDriver오라클 드라이버가 클래스가 없다는 에러가 발생했다.
그 이유는 우리가 JDBC를 사용하려면 JDBC를 설정 해 주는 JDBC 드라이버가 필요하다.
그 전에는 그냥 BUILD PATH에서 JAR 파일을 추가해주면 끝이였는데 웹프로젝트는 그렇게 하면 안된다.
그 자료 파일이 컴파일과 실행 할 때에도 필요하게 되는데 이클립스에서 컴파일하고 실행은 톰캣으로 배포되어서 실행이 되는데 실행 될 때에 BUILD PATH가 달라지게 되고 하기 때문에 웹개발 할 때에는 웹에서 사용하는 라이브러리가 배표시에도 사용되기 떄문에 라이브러리를 같이 가져가야한다.
라이브러리를 같이 배포 할 수 있도록 라이브러리도 같이 추가 해 줘야한다.
WEB-INF파일 안에 lib라고 라이브러리를 추가 할 수 있는 폴더가 있다.
저 폴더에 우리가 사용 할 자료파일을 담아주면 된다.
그럼 ojdbc8.jar 파일을 lib 폴더에 넣어주고 실행을 다시 해보면

짜잔 이렇게 내가 넣은 데이터들이 넣어져서 출력 되는 것을 확인 할 수 있다.
'Servlet-JSP' 카테고리의 다른 글
JSP 자세한 글 목록 MVC model1로 구현하기 (0) 2022.02.09 JSP 서블릿으로 자세한 페이지 구현하기 (0) 2022.02.08 JSP-게시판 인덱스 코드블럭으로 만들기 (0) 2022.01.26 EL 연산자 (0) 2022.01.24 EL(Expression Language) 저장소 (0) 2022.01.24