Chapter04 서블릿과 JDBC(1)

lej7122·2019년 6월 30일
0

Java-Web-Programming

목록 보기
4/7

'회원 목록 조회' 서블릿 만들기

src/spms/servlets/MemberListServlet.java

데이터베이스 관련 객체의 참조 변수 선언

service() 에서 처음 부분은 JDBC 객체 주소를 보관할 참조 변수의 선언이다.

Connection conn = null;

Statement stmt = null;

ResultSet rs= null;

DriverManager가 사용할 JDBC 드라이버 등록

DriverManager.registerDriver(new com.mysql.jdbc.Driver());

MySQL 드라이버의 경우 com.mysql.jdbc.Driver 클래스가 해당 인터페이스를 구현한 클래스이다. registerDriver()를 호출하여 구현체를 등록한다. 이 클래스는 MySQL 드라이버 파일(web/lib/mysql-connector-java-5.1.26-bin.jar)안에 있다.

데이터베이스에 연결

2번과 같이 DriverManager의 getConnection()을 호출하여 MySQL 서버에 연결할 수 있다.

SQL 실행 객체 준비

3번과 같이 Connection 구현체를 이용하여 SQL 문을 실행할 객체를 준비한다. createStatement()가 반환하는 것은 java.sql.Statement 인터페이스의 구현체이다. 이 객체를 통해 데이터베이스에 SQL문을 보낼 수 있다. 이 인터페이스에는 데이터베이스에 질의하는 데 필요한 메서드가 정의되어 있다.

  • executeQuery() : 결과가 만들어지는 SQL 문을 실행할 때 사용한다. (SELECT)
  • executeUpdate() : DML과 DDL 관련 SQL 문을 실행할 때 사용한다. (DDL = INSERT ..., DML = CREATE...)
  • execute() : SELECT, DML, DDL 명령문에 모두 사용한다.
  • executeBatch() : addBatch()로 등록한 여러 개의 SQL 문을 한꺼번에 실행할 때 사용한다.

데이터베이스에 SQL 문을 보내기

4번과 같다.

SELECT 결과 가져오기

5번과 같다. ResultSet 객체를 통해 next()를 호출하면 서버에서 레코드(Record)를, 다른 말로 '행(row)'을 가져온다. 서버에서 받은 레코드는 ResultSet 객체에 보관된다. next()는 서버에서 레코드를 받으면 true, 없으면 false를 반환한다.

JDBC 프로그래밍의 마무리

JDBC 프로그래밍을 할 때 주의할 점은 정상적으로 수행되든 오류가 발생하든 간에 반드시 자원 해제를 수행하는 것이다. finally 블록에서 수행한다. 자원을 해제할 때는 역순으로 처리한다.

서블릿 배치 정보 설정

@WebServlet 애노테이션으로 서블릿의 배치 정보를 설정한다. MemberListServlet의 URL 패턴 값은 '/member/list'로 설정한다.

MySQL connection 문제가 발생하는 경우

JDBC url 뒤에 &useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 를 삽입한다.

'회원 목록 조회' 서블릿 테스트

Chapter04(1)-1

profile
개발자 블로그

0개의 댓글