[Java/PostgreSQL] WEB 앱을 데이터베이스에 연결하기

이 기사의 내용



Eclipse에서 개발하는 웹 앱과 데이터베이스를 연결하는 방법

이 기사를 쓴 이유



잊을 때 확인하기 위해

이 기사를 쓴 사람의 특징



2011년 국립대교육학부졸(당시, 프로그래밍에 전혀 관심 없음)
대학 졸업 후, 이세탄·리크루트 등으로 근무.
2016년경~ 독학으로 프로그래밍 공부 시작
(Rails로 앱을 개발할 수 있게 됨)
2018년 ~ SE로 근무

Rails에서는 DB의 설정은 명령을 입력하면 자동으로 처리할 수 있었다.
Java에서는, 그 설정을 스스로 할 필요가 있기 때문에 그 공부를 겸해 이 기사를 썼다.

개발 환경



PC: Mac
OS: MacOS Mojave
언어: Java
IDE: Eclipse
DB: PostgreSQL
DB 관리 도구: pgAdmin

전제 조건



연결 대상 데이터베이스 정보



· 연결 대상 데이터베이스는 로컬 환경 (포트 : 5432)입니다.
· 샘플 데이터베이스에는 customer 테이블이 있습니다.
・customer 테이블에는 하기의 샘플 데이터가 저장되어 있다

SQL
SELECT * FROM customer;

실행 결과
  id  |   name   |        email        | password 
------+----------+---------------------+----------
 0001 | sample1  | [email protected]  | password
 0002 | sample2  | [email protected]  | password
 0003 | sample3  | [email protected]  | password
 0004 | sample4  | [email protected]  | password
 0005 | sample5  | [email protected]  | password
 0006 | sample6  | [email protected]  | password
 0007 | sample7  | [email protected]  | password
 0008 | sample8  | [email protected]  | password
 0009 | sample9  | [email protected]  | password
 0010 | sample10 | [email protected] | password
(10 rows)

Eclipse에서 개발하는 웹 앱 정보



·이 WEB 앱은 동적 WEB 프로젝트 (Dynamic WEB Project)로 작성
·이 웹 앱은 http://localhost:8080/sample/sample2에 액세스한다고 가정합니다.

코드 예



Sampleapp2.java
package jp.co.sample;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;

public class Sampleapp2 extends HttpServlet {
    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<style>table,th,td,tr{border: 1px solid black};</style>");
        out.println("<body>");
        out.println("<h1>Sampleapp by Java Servlet</h1>");
        out.println("</body>");
        out.println("</html>");

        String url = "jdbc:postgresql://localhost:5432/sample";
        String user = "USERNAME";
        String password = "PASSWORD";

        try{
            Class.forName("org.postgresql.Driver");
            System.out.println("データベースの接続に成功しました");
        } catch(Exception e) {
            e.printStackTrace();
        }


        try {
            Connection conn = DriverManager.getConnection(url, user, password);
            conn.setAutoCommit(false);
            Statement stmt = conn.createStatement();
            String sql = "SELECT * FROM customer";
            ResultSet rset = stmt.executeQuery(sql);

            out.println("<table>");
            out.println("<tr><th>ID</th><th>UserName</th><th>Email</th></tr>");

            while(rset.next()) {
                out.println("<tr><td>" + rset.getString("id") + "</td><td>" + rset.getString("name") + "</td><td>" + rset.getString("email") + "</td></tr>");
            }

            out.println("</table>");

        } catch (Exception e) {
            System.out.println("Exception: " + e.getMessage());
        }


    }
}

포인트


WEB-INF/lib 디렉토리에 .jar 파일 넣기


실행 결과



웹 앱 서버를 실행하고 http://localhost:8080/sample/sample2

Eclipse 콘솔
5月 12, 2019 4:26:33 午後 org.apache.catalina.startup.VersionLoggerListener log
情報: Server version name:   Apache Tomcat/9.0.14

(中略)

5月 12, 2019 4:26:35 午後 org.apache.catalina.startup.Catalina start
情報: サーバーの起動 [1,215]ms
データベースの接続に成功しました

브라우저에서 화면 확인

데이터베이스에 저장된 데이터가 브라우저에 표시되는 것을 확인할 수 있었다.

앞으로 하고 싶은 일



데이터 저장, 편집, 업데이트, 삭제
AWS에 놓은 DB와의 연계

감상



Rails에서는 명령 몇 줄을 쓰고 실행하면 자동으로 설정할 수있는 DB.
Java에서는 하나하나 스스로 설정해야 하는 것이 귀찮다.

좋은 웹페이지 즐겨찾기