JSP는 기본적인 기능들밖에 제공하지 않는다 (request, sessoion, EL ...)
그렇기에 다른 추가적인 기능들을 사용하려면 API를 이용해야 한다.
Database에 연결하는 것도 마찬가지로 다른 api를 다운받아서 그것을 이용하여 사용하여야 한다. (api를 현제 진행중인 프로젝트파일에 옮겨와야 한다 )
참고 : https://hees-dev.tistory.com/7
출처: https://hyeonstorage.tistory.com/110 [개발이 하고 싶어요]
참고 https://lhc9138.tistory.com/63
2. JDBC를 사용한 JSP와 데이터베이스의 연동
JDBC 프로그램의 작성 단계
① 1단계 (JDBC 드라이버 Load)
인터페이스 드라이버(interface driver)를 구현(implements)하는 작업으로, Class 클래스의 forName() 메소드를 사용해서 드라이버를 로드한다. forName(String className) 메소드는 분자열로 주어진 클래스나 인터페이스 이름을 객체로 리턴한다.
MySQL 드라이버 로딩
Class.forName("com.mysql.jdbc.Driver");
Class.forName()의 작동원리
Class 클래스는 클래스들의 정보(클래스의 필드, 메서드, 클래스의 종류(인터페이스 등))를 담는 메타 클래스이고 JVM은 이 Class 클래스를 통해 클래스들에 대한 정보를 로드 합니다.
Class.forName()는 JVM에게 해당 클래스의 정보를 로드한다.
이 때 한 가지 생각해야 할 것은 JVM에게 해당 클래스의 정보가 로딩된다는 것은 JVM이 할당하는 메모리 (클래스 영역)에 로드되고 그 때 위의 static 절이 실행되면서 DriverManager에 해당 드라이버가 레지스터 되는 것입니다.
따라서 DriverManager는 이 정보를 가지고 getConnection을 할 수 있는 것이죠.
② 2단계 (Connection 객체 생성)
Connection 객체를 연결하는 것으로 DriverManager에 등록된 각 드라이버들을 getConnection(String url) 메소드를 사용해서 식별한다. 이때 url 식별자와 같은 것을 찾아서 매핑(mapping)한다. 찾지 못하면 no suitable error 가 발생한다.
MySQL 사용시 Connection 객체 생성
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsptest", "jspid","jsptest");
getConnection(dbURL,dbID,dbPassword);
③ 3단계 (Statement/PreparedStatement/CallableStatement 객체 생성)
sql 쿼리를 생성/실행하며, 반환된 결과를 가져오게 할 작업 영역을 제공한다.
Statement 객체는 Connection 객체의 createStatement() 메소드를 사용하여 생성된다.
Statement stmt = conn.createStatement();
④ 4단계 (Query 수행)
Statement 객체가 생성되면 Statement 객체의 executeQuery() 메소드나 executeUpdate() 메소드를 사용해서 쿼리를 처리한다.
stmt.executeQuery : recordSet 반환 => Select 문에서 사용
ResultSet rs = stmt.executeQuery("select * from 소속기관");
String sql = "update member1 set passwd = '3579' where id ='abc'";
stmt.executeUpdate(sql);
⑤ 5단계 (ResultSet 처리)
while(rs.next()){
out.println(rs.getString("id"));
out.println(rs.getString("passwd");
}
출처: https://hyeonstorage.tistory.com/110 [개발이 하고 싶어요]