JAVA JSP + MySQL 연동

WRITTEN BY

baealex

소비적인 일보단 생산적인 일을 추구하며, 좋아하는 일을 잘하고 싶어합니다 :D
Sign in to view email

윈도우에서 드라이버 연동은 굉장히 쉬웠다. 그냥 WEB-INF/lib에 드라이버를 넣어주니 잘 작동했으나 리눅스는 작업을 거쳐줘야 정상적인 사용이 가능했다. 우선 MySQL에서 제공하는 Connector/J를 다운받자. 필자의 경우에는 Platform Independent로 받았다. 압축파일이 받아지는데 압축해제 후 jar 파일만 사용할 것이다.


데이터 베이스 연동에서 사용되는 주요 클래스는 다음과 같다. Connection, PreparedStatement, ResultSet 첫번째의 경우에는 데이터 베이스를 연결하거나 해제할때, 두번째는 쿼리문을 실행할때, 세번째는 SELECT등을 사용한 경우 쿼리문을 받기 위해서 사용된다.


먼저 압축파일을 다운받고 풀어준뒤 해당 디렉터리로 들어가자.

sudo cp mysql-connector-java-8.0.17.jar $JAVA_HOME/lib/

그리고 위 경로로 jar 파일을 배치시켜야 한다. 다음은 profile에서 다음 내용을 추가한다.

sudo vi /etc/profile
export CLASSPATH=.:$JAVA_HOME/lib/mysql-connector-java-8.0.17.jar
source /etc/profile

필자의 경우에는 위 과정을 거치고 잘 됐지만 가끔 실패하는 경우도 있었다. 발생하는 오류는 WEB-INF/lib에 드라이버가 없다는 것이었다. 왜 그런진 모르겠지만 드라이버를 넣어주고 진행하였다. 여하지간 이제 드라이버가 정상적으로 인식되는지 확인하자.


Programing

<%@ page import="java.sql.*"%>
<%
String DB_URL = "jdbc:mysql://127.0.0.1:3306/testcase?serverTimezone=UTC";
String DB_USER = "baealex";
String DB_PW = "1234";
Connection conn;
PreparedStatement ps;
ResultSet rs;

try {
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PW);

    StringBuffer sb = new StringBuffer();
    sb.append(" SELECT * FROM GUEST ");
    ps = conn.prepareStatement(sb.toString());

    rs = ps.executeQuery();

    while(rs.next()){
        out.println(rs.getString(1)+"&nbsp"+rs.getString(2)+"&nbsp"+rs.getString(3)+"<br />");
    }

    conn.close();
    out.println("MySQL JDBC Driver Connection Test Done.");
} catch(Exception e) {
    out.println(e.getMessage());
}
%>

JSP와 함께 주로 언급되는 오라클과 연결하는 방식은 비슷하지만 다르게 설정해 주어야 하는 부분이 DB_URLClass.forName 부분을 다르게 변경해야 한다. 또 MySQL URL 경로의 하단에 ?serverTimezone=UTC라고 붙어있는데 처음 MySQL을 사용할때 계속 시간과 관련된 오류가 발생해서 당황했으나 해당 문구를 붙이고 문제를 해결할 수 있었다.

또 쿼리를 실행시키는 함수는 executeQuery()updateQuery()가 있는데 SELECT 구분이 포함되었으면 execute로 그외의 경우에는 update로 실행하면 된다. execute의 경우에는 ResultSet이라는 형식으로 모든 속성의 값을 반환해주고 updateint형으로 반환해 준다.


Result

1 baealex Hi
2 endy nice
3 aram good!
4 baealex Hi
MySQL JDBC Driver Connection Test Done.

작성된 댓글이 없습니다!

로그인된 사용자만 댓글을 작성할 수 있습니다.

이 작성자가 게시한 다른 글