공감 및 댓글은 포스팅 하는데 아주아주 큰 힘이 됩니다!! 포스팅 내용이 찾아주신 분들께 도움이 되길 바라며 더 깔끔하고 좋은 포스팅을 만들어 나가겠습니다^^
|
이번 포스팅에서는 제목처럼 mysql 과 연동 시 호출하는 Class.forName()을
자바 클래스에서 호출하지 않고, Servlet 설정을 통해 호출하는 방법에 대해 알아보겠습니다.
일반적으로 jdbc를 호출할 때 아래 코드처럼 호출을 하죠?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public String methods(String param1) { String result = ""; try { Class.forName("com.mysql.jdbc.Driver"); conn = ...; String sql = "..."; pstmt = conn.prepareStatement(sql); ... } catch (Exception e) { } finally { JdbcUtil.close(rs); JdbcUtil.close(pstmt); JdbcUtil.close(conn); } return result; } | cs |
그런데 mysql과 연동되는 함수가 많아질 수록
Class.forName()은 반복해서 호출이 되겠죠?
이러한 반복 코드를 줄일 수 있는 방법이 있는데요.
바로 web.xml 파일에 Servlet 태그를 추가해주는 방법입니다.
저는 aws 를 사용하고 있으므로 aws를 기준으로 설명하겠습니다.
톰캣버전을 8버전을 쓰고 있습니다.
가장 먼저 JdbcLoader 이라는 자바 클래스를 하나 만들어 줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | package package.aaa.bbb; import java.util.StringTokenizer; import javax.servlet.ServletConfig; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; public class JdbcLoader extends HttpServlet { public void init(ServletConfig config) throws ServletException { try { String driver = config.getInitParameter("jdbcdriver"); StringTokenizer stringTokenizer = new StringTokenizer(driver, ","); while(stringTokenizer.hasMoreTokens()) { String jdbcDriver = stringTokenizer.nextToken(); Class.forName(jdbcDriver); } } catch ( Exception e) { throw new ServletException(e); } } } | cs |
그리고 web.xml 파일을 만들어서 아래 코드를 넣어줍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>JDBCDriverLoader</servlet-name> <servlet-class>package.aaa.bbb.JdbcLoader</servlet-class> <init-param> <param-name>jdbcdriver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> </web-app> | cs |
이렇게 준비가 되셨다면
tomcat8/webapps/projectName/WEB-INF/classes/package/aaa/bbb 아래에
컴파일로 생성된 JdbcLoader.class 파일을 넣어주시고,
WEB-INF 아래에 위에서 만든 web.xml 파일을 넣어줍니다.
여기까지 끝나셨으면
mysql 연동하는 자바 클래스에서 Class.forName() 코드들을 다 지워주시고,
톰캣을 재시작 해주시면
Class.forName()을 호출해서 사용했을 때와
동일하게 동작하는 것을 확인하실 수 있습니다~~~
이상입니다!
'개발 etc' 카테고리의 다른 글
이클립스 상위 버전으로 수동 업데이트하기! (0) | 2017.11.10 |
---|---|
AWS amazon EC2 인스턴스 root 계정활성화 ssh 외부접속 활성화 (0) | 2017.09.27 |
프레임워크와 라이브러리의 차이 Differences between libraries and frameworks (3) | 2017.07.19 |
mysql auto_increment reset , auto_increment set 1, auto_increment 1로 초기화하기 (0) | 2017.06.13 |
티스토리 소스 코드 넣기 소스 코드 플러그인 syntaxhighlighter 플러그인 하는 방법 (0) | 2017.06.10 |